Alexandre Isoard via llvm-dev
2018-Jan-25 03:24 UTC
[llvm-dev] [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
Yes, all that is correct. My question is more a long term question: why do the .ll printer specify the alignment if it is equivalent to the default one? That is, it seems the sed script expect the printer to not specify it (this would match the load/store behavior), but the ll-printer does specify it, which either means the printer is not ideal on this case and I should fix it, or in this case the ABI alignment is not what I think it is, then I should fix the test-cases. I'm not sure which side is correct. On Wed, Jan 24, 2018 at 7:11 PM, Daniel Neilson <dneilson at azul.com> wrote:> Hi Alexandre, > Before the change you would have been expecting one of the following, > correct? > a) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x > float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* > [[APTR]], i64 2048, i32 0, i1 false) > b) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x > float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* > [[APTR]], i64 2048, i32 1, i1 false) > > Functionally, (a) & (b) are both saying that the src & dest pointers are > 1-byte aligned; i.e. they’re both basically saying “I don’t really have any > better information on alignment, so we’ll go with 1-byte aligned since it > can’t be less aligned than that” > > After the patch, you’re seeing: > i) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 bitcast > ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 align 1 > addrspace(1)* [[APTR]], i64 2048, i1 false) > but your IR test, that you ran the sed script on, is saying to expect: > ii) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x > float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* > [[APTR]], i64 2048, i1 false) > > Is that correct? Just like (a) & (b), both (i) & (ii) are functionally > equivalent. > > The script rule that would have changed that was: > s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), > i8([^*]*)\* (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i64(i8\3* > \4, i8\5* \6, i64 \7, i1 \8)~g > > It was converting both (a) and (b) into (ii). If that’s not what you’re > seeing/wanting, then you can just add the ‘align 1’s into your test’s CHECK > pattern, or alter the sed script by changing “..., i32 [01], i1...” > into “..., i32 0, i1…" > > -Daniel > > On Jan 24, 2018, at 8:47 PM, Alexandre Isoard <alexandre.isoard at gmail.com> > wrote: > > Thanks, that worked like a charm except for the following: > > llvm generate: > > call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 bitcast > ([512 x float] addrspace(3)* @a_scratchpad to i8 addrspace(3)*), i8 > addrspace(1)* align 1 %0, i64 2048, i1 false) > > And we expected: > > call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x > float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* > [[APTR]], i64 2048, i1 false) > > Notice the presence of "align 1". I'm not sure which side is correct, > isn't it equivalent (that is, this is the natural ABI alignment of that > type)? > > Here is my datalayout: > > target datalayout = "e-m:e-i64:64-n8:16:32:64- > S128-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256- > v512:512-v1024:1024" > > > 2018-01-23 20:14 GMT-08:00 Daniel Neilson <dneilson at azul.com>: > >> Hi Alexandre, >> The script uses extended-sed syntax, so you need to run sed with the -E >> option. >> >> For example, when preparing the patch I created a file ( script.sed ) >> containing all of the lines that I copied into the commit message. Then, I >> ran this bash one-liner from the test directory: >> for f in $(find . -name '*.ll'); do sed -E -i ‘.sedbak' -f script.sed $f; >> done >> >> When I was happy with the results, then: find . -name ‘*.sedbak’ --exec >> rm -f {} \; >> >> Please let me know if that doesn’t work for you. >> >> -Daniel >> >> On Jan 23, 2018, at 8:33 PM, Alexandre Isoard via llvm-dev < >> llvm-dev at lists.llvm.org> wrote: >> >> Hello, >> >> Is there a script to update those test cases? I see mention of a sed >> script in the commit message but when I try it (see attached) on sed I get >> the following error: >> >> sed: file script line 2: invalid reference \3 on `s' command's RHS >> >> Did I lose something in a copy-paste? Is it not really a sed script? How >> do I run it? >> >> >> On Fri, Jan 19, 2018 at 9:15 AM, Daniel Neilson via Phabricator via >> llvm-commits <llvm-commits at lists.llvm.org> wrote: >> >>> This revision was automatically updated to reflect the committed changes. >>> Closed by commit rL322965: Remove alignment argument from >>> memcpy/memmove/memset in favour of alignment… (authored by dneilson, >>> committed by ). >>> >>> Repository: >>> rL LLVM >>> >>> https://reviews.llvm.org/D41675 >>> >>> Files: >>> llvm/trunk/docs/LangRef.rst >>> llvm/trunk/include/llvm/IR/IntrinsicInst.h >>> llvm/trunk/include/llvm/IR/Intrinsics.td >>> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp >>> llvm/trunk/lib/IR/AutoUpgrade.cpp >>> llvm/trunk/lib/IR/IRBuilder.cpp >>> llvm/trunk/lib/IR/Verifier.cpp >>> llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp >>> llvm/trunk/lib/Target/ARM/ARMFastISel.cpp >>> llvm/trunk/lib/Target/Mips/MipsFastISel.cpp >>> llvm/trunk/lib/Target/X86/X86FastISel.cpp >>> llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp >>> llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp >>> llvm/trunk/test/Analysis/AliasSet/memtransfer.ll >>> llvm/trunk/test/Analysis/BasicAA/assume.ll >>> llvm/trunk/test/Analysis/BasicAA/cs-cs.ll >>> llvm/trunk/test/Analysis/BasicAA/gep-and-alias.ll >>> llvm/trunk/test/Analysis/BasicAA/getmodrefinfo-cs-cs.ll >>> llvm/trunk/test/Analysis/BasicAA/guards.ll >>> llvm/trunk/test/Analysis/BasicAA/modref.ll >>> llvm/trunk/test/Analysis/CallGraph/no-intrinsics.ll >>> llvm/trunk/test/Analysis/ConstantFolding/gep-constanfolding-error.ll >>> llvm/trunk/test/Analysis/DependenceAnalysis/Preliminary.ll >>> llvm/trunk/test/Analysis/GlobalsModRef/memset-escape.ll >>> llvm/trunk/test/Analysis/GlobalsModRef/no-escape.ll >>> llvm/trunk/test/Analysis/GlobalsModRef/pr12351.ll >>> llvm/trunk/test/Analysis/GlobalsModRef/volatile-instrs.ll >>> llvm/trunk/test/Analysis/Lint/noalias-byval.ll >>> llvm/trunk/test/Analysis/MemorySSA/basicaa-memcpy.ll >>> llvm/trunk/test/Analysis/ScalarEvolution/avoid-smax-1.ll >>> llvm/trunk/test/Analysis/ScalarEvolution/trip-count.ll >>> llvm/trunk/test/Analysis/ScalarEvolution/trip-count3.ll >>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll >>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll >>> llvm/trunk/test/Bitcode/standardCIntrinsic.3.2.ll >>> llvm/trunk/test/Bitcode/upgrade-memory-intrinsics.ll >>> llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll >>> llvm/trunk/test/CodeGen/AArch64/PBQP-csr.ll >>> llvm/trunk/test/CodeGen/AArch64/aarch64-DAGCombine-findBette >>> rNeighborChains-crash.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-2012-05-07-MemcpyAlignBug.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-abi-varargs.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-abi_align.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-memcpy-inline.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-memset-inline.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-memset-to-bzero.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-misaligned-memcpy-inline.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A53.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A57.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-stur.ll >>> llvm/trunk/test/CodeGen/AArch64/arm64-virtual_base.ll >>> llvm/trunk/test/CodeGen/AArch64/fast-isel-memcpy.ll >>> llvm/trunk/test/CodeGen/AArch64/func-argpassing.ll >>> llvm/trunk/test/CodeGen/AArch64/ldp-stp-scaled-unscaled-pairs.ll >>> llvm/trunk/test/CodeGen/AArch64/ldst-paired-aliasing.ll >>> llvm/trunk/test/CodeGen/AArch64/ldst-zero.ll >>> llvm/trunk/test/CodeGen/AArch64/machine-combiner-madd.ll >>> llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll >>> llvm/trunk/test/CodeGen/AArch64/merge-store-dependency.ll >>> llvm/trunk/test/CodeGen/AArch64/mergestores_noimplicitfloat.ll >>> llvm/trunk/test/CodeGen/AArch64/misched-stp.ll >>> llvm/trunk/test/CodeGen/AArch64/pr33172.ll >>> llvm/trunk/test/CodeGen/AArch64/tailcall-mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/AArch64/tailcall-string-rvo.ll >>> llvm/trunk/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll >>> llvm/trunk/test/CodeGen/AMDGPU/lds-alignment.ll >>> llvm/trunk/test/CodeGen/AMDGPU/llvm.memcpy.ll >>> llvm/trunk/test/CodeGen/AMDGPU/lower-mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/AMDGPU/stack-size-overflow.ll >>> llvm/trunk/test/CodeGen/ARM/2009-03-07-SpillerBug.ll >>> llvm/trunk/test/CodeGen/ARM/2011-03-10-DAGCombineCrash.ll >>> llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-inline.ll >>> llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-with-neon.ll >>> llvm/trunk/test/CodeGen/ARM/2012-04-24-SplitEHCriticalEdge.ll >>> llvm/trunk/test/CodeGen/ARM/Windows/memset.ll >>> llvm/trunk/test/CodeGen/ARM/Windows/no-aeabi.ll >>> llvm/trunk/test/CodeGen/ARM/arm-eabi.ll >>> llvm/trunk/test/CodeGen/ARM/constantpool-promote-ldrh.ll >>> llvm/trunk/test/CodeGen/ARM/constantpool-promote.ll >>> llvm/trunk/test/CodeGen/ARM/crash-O0.ll >>> llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll >>> llvm/trunk/test/CodeGen/ARM/dyn-stackalloc.ll >>> llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll >>> llvm/trunk/test/CodeGen/ARM/interval-update-remat.ll >>> llvm/trunk/test/CodeGen/ARM/ldm-stm-base-materialization.ll >>> llvm/trunk/test/CodeGen/ARM/machine-cse-cmp.ll >>> llvm/trunk/test/CodeGen/ARM/memcpy-inline.ll >>> llvm/trunk/test/CodeGen/ARM/memcpy-ldm-stm.ll >>> llvm/trunk/test/CodeGen/ARM/memcpy-no-inline.ll >>> llvm/trunk/test/CodeGen/ARM/memfunc.ll >>> llvm/trunk/test/CodeGen/ARM/memset-inline.ll >>> llvm/trunk/test/CodeGen/ARM/stack-protector-bmovpcb_call.ll >>> llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll >>> llvm/trunk/test/CodeGen/ARM/tailcall-mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/AVR/std-ldd-immediate-overflow.ll >>> llvm/trunk/test/CodeGen/BPF/byval.ll >>> llvm/trunk/test/CodeGen/BPF/ex1.ll >>> llvm/trunk/test/CodeGen/BPF/fi_ri.ll >>> llvm/trunk/test/CodeGen/BPF/reloc.ll >>> llvm/trunk/test/CodeGen/BPF/rodata_1.ll >>> llvm/trunk/test/CodeGen/BPF/rodata_2.ll >>> llvm/trunk/test/CodeGen/BPF/rodata_3.ll >>> llvm/trunk/test/CodeGen/BPF/rodata_4.ll >>> llvm/trunk/test/CodeGen/BPF/sanity.ll >>> llvm/trunk/test/CodeGen/BPF/undef.ll >>> llvm/trunk/test/CodeGen/BPF/warn-call.ll >>> llvm/trunk/test/CodeGen/Generic/ForceStackAlign.ll >>> llvm/trunk/test/CodeGen/Generic/invalid-memcpy.ll >>> llvm/trunk/test/CodeGen/Hexagon/adjust-latency-stackST.ll >>> llvm/trunk/test/CodeGen/Hexagon/branchfolder-keep-impdef.ll >>> llvm/trunk/test/CodeGen/Hexagon/early-if-conversion-bug1.ll >>> llvm/trunk/test/CodeGen/Hexagon/mem-fi-add.ll >>> llvm/trunk/test/CodeGen/Hexagon/memcpy-likely-aligned.ll >>> llvm/trunk/test/CodeGen/Hexagon/rdf-filter-defs.ll >>> llvm/trunk/test/CodeGen/Hexagon/store-imm-stack-object.ll >>> llvm/trunk/test/CodeGen/Hexagon/tail-call-mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/MSP430/memset.ll >>> llvm/trunk/test/CodeGen/Mips/2012-12-12-ExpandMemcpy.ll >>> llvm/trunk/test/CodeGen/Mips/Fast-ISel/memtest1.ll >>> llvm/trunk/test/CodeGen/Mips/biggot.ll >>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-small-structure >>> s-bigger-than-32bits.ll >>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-s >>> tructs-byte.ll >>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-s >>> tructs-combinations.ll >>> llvm/trunk/test/CodeGen/Mips/cconv/return-struct.ll >>> llvm/trunk/test/CodeGen/Mips/largeimmprinting.ll >>> llvm/trunk/test/CodeGen/Mips/long-calls.ll >>> llvm/trunk/test/CodeGen/Mips/memcpy.ll >>> llvm/trunk/test/CodeGen/Mips/pr33978.ll >>> llvm/trunk/test/CodeGen/Mips/tailcall/tailcall.ll >>> llvm/trunk/test/CodeGen/NVPTX/lower-aggr-copies.ll >>> llvm/trunk/test/CodeGen/PowerPC/2011-12-05-NoSpillDupCR.ll >>> llvm/trunk/test/CodeGen/PowerPC/2011-12-06-SpillAndRestoreCR.ll >>> llvm/trunk/test/CodeGen/PowerPC/MMO-flags-assertion.ll >>> llvm/trunk/test/CodeGen/PowerPC/aantidep-inline-asm-use.ll >>> llvm/trunk/test/CodeGen/PowerPC/ctrloop-reg.ll >>> llvm/trunk/test/CodeGen/PowerPC/emptystruct.ll >>> llvm/trunk/test/CodeGen/PowerPC/fsl-e500mc.ll >>> llvm/trunk/test/CodeGen/PowerPC/fsl-e5500.ll >>> llvm/trunk/test/CodeGen/PowerPC/glob-comp-aa-crash.ll >>> llvm/trunk/test/CodeGen/PowerPC/isel-rc-nox0.ll >>> llvm/trunk/test/CodeGen/PowerPC/licm-remat.ll >>> llvm/trunk/test/CodeGen/PowerPC/lxv-aligned-stack-slots.ll >>> llvm/trunk/test/CodeGen/PowerPC/memcpy-vec.ll >>> llvm/trunk/test/CodeGen/PowerPC/memcpy_dereferenceable.ll >>> llvm/trunk/test/CodeGen/PowerPC/memset-nc-le.ll >>> llvm/trunk/test/CodeGen/PowerPC/memset-nc.ll >>> llvm/trunk/test/CodeGen/PowerPC/merge-st-chain-op.ll >>> llvm/trunk/test/CodeGen/PowerPC/ppc-empty-fs.ll >>> llvm/trunk/test/CodeGen/PowerPC/pr27350.ll >>> llvm/trunk/test/CodeGen/PowerPC/resolvefi-basereg.ll >>> llvm/trunk/test/CodeGen/PowerPC/resolvefi-disp.ll >>> llvm/trunk/test/CodeGen/PowerPC/structsinmem.ll >>> llvm/trunk/test/CodeGen/PowerPC/structsinregs.ll >>> llvm/trunk/test/CodeGen/PowerPC/stwu8.ll >>> llvm/trunk/test/CodeGen/PowerPC/tailcall-string-rvo.ll >>> llvm/trunk/test/CodeGen/PowerPC/toc-load-sched-bug.ll >>> llvm/trunk/test/CodeGen/RISCV/frame.ll >>> llvm/trunk/test/CodeGen/SystemZ/dag-combine-02.ll >>> llvm/trunk/test/CodeGen/SystemZ/loop-01.ll >>> llvm/trunk/test/CodeGen/SystemZ/loop-03.ll >>> llvm/trunk/test/CodeGen/SystemZ/memcpy-01.ll >>> llvm/trunk/test/CodeGen/SystemZ/memset-01.ll >>> llvm/trunk/test/CodeGen/SystemZ/memset-02.ll >>> llvm/trunk/test/CodeGen/SystemZ/memset-03.ll >>> llvm/trunk/test/CodeGen/SystemZ/memset-04.ll >>> llvm/trunk/test/CodeGen/SystemZ/tail-call-mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/Thumb/2011-05-11-DAGLegalizer.ll >>> llvm/trunk/test/CodeGen/Thumb/dyn-stackalloc.ll >>> llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization-thumb2.ll >>> llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization.ll >>> llvm/trunk/test/CodeGen/Thumb/stack-coloring-without-frame-ptr.ll >>> llvm/trunk/test/CodeGen/Thumb2/2009-08-04-SubregLoweringBug.ll >>> llvm/trunk/test/CodeGen/Thumb2/2012-01-13-CBNZBug.ll >>> llvm/trunk/test/CodeGen/WebAssembly/global.ll >>> llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/X86/2007-10-15-CoalescerCrash.ll >>> llvm/trunk/test/CodeGen/X86/2009-01-25-NoSSE.ll >>> llvm/trunk/test/CodeGen/X86/2009-11-16-UnfoldMemOpBug.ll >>> llvm/trunk/test/CodeGen/X86/2010-04-08-CoalescerBug.ll >>> llvm/trunk/test/CodeGen/X86/2010-04-21-CoalescerBug.ll >>> llvm/trunk/test/CodeGen/X86/2010-06-25-CoalescerSubRegDefDead.ll >>> llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll >>> llvm/trunk/test/CodeGen/X86/2012-01-10-UndefExceptionEdge.ll >>> llvm/trunk/test/CodeGen/X86/alignment-2.ll >>> llvm/trunk/test/CodeGen/X86/bug26810.ll >>> llvm/trunk/test/CodeGen/X86/darwin-bzero.ll >>> llvm/trunk/test/CodeGen/X86/fast-isel-call.ll >>> llvm/trunk/test/CodeGen/X86/fast-isel-deadcode.ll >>> llvm/trunk/test/CodeGen/X86/fast-isel-x86-64.ll >>> llvm/trunk/test/CodeGen/X86/force-align-stack-alloca.ll >>> llvm/trunk/test/CodeGen/X86/immediate_merging.ll >>> llvm/trunk/test/CodeGen/X86/immediate_merging64.ll >>> llvm/trunk/test/CodeGen/X86/lea-opt-memop-check-1.ll >>> llvm/trunk/test/CodeGen/X86/load-slice.ll >>> llvm/trunk/test/CodeGen/X86/lsr-normalization.ll >>> llvm/trunk/test/CodeGen/X86/mcu-abi.ll >>> llvm/trunk/test/CodeGen/X86/mem-intrin-base-reg.ll >>> llvm/trunk/test/CodeGen/X86/memcpy-2.ll >>> llvm/trunk/test/CodeGen/X86/memcpy-from-string.ll >>> llvm/trunk/test/CodeGen/X86/memcpy.ll >>> llvm/trunk/test/CodeGen/X86/memset-2.ll >>> llvm/trunk/test/CodeGen/X86/memset-3.ll >>> llvm/trunk/test/CodeGen/X86/memset-nonzero.ll >>> llvm/trunk/test/CodeGen/X86/memset-sse-stack-realignment.ll >>> llvm/trunk/test/CodeGen/X86/memset.ll >>> llvm/trunk/test/CodeGen/X86/memset64-on-x86-32.ll >>> llvm/trunk/test/CodeGen/X86/misaligned-memset.ll >>> llvm/trunk/test/CodeGen/X86/misched-new.ll >>> llvm/trunk/test/CodeGen/X86/negate-add-zero.ll >>> llvm/trunk/test/CodeGen/X86/optimize-max-0.ll >>> llvm/trunk/test/CodeGen/X86/pr11985.ll >>> llvm/trunk/test/CodeGen/X86/pr14333.ll >>> llvm/trunk/test/CodeGen/X86/pr34088.ll >>> llvm/trunk/test/CodeGen/X86/ragreedy-hoist-spill.ll >>> llvm/trunk/test/CodeGen/X86/regparm.ll >>> llvm/trunk/test/CodeGen/X86/remat-fold-load.ll >>> llvm/trunk/test/CodeGen/X86/slow-unaligned-mem.ll >>> llvm/trunk/test/CodeGen/X86/small-byval-memcpy.ll >>> llvm/trunk/test/CodeGen/X86/stack-align.ll >>> llvm/trunk/test/CodeGen/X86/stack-protector.ll >>> llvm/trunk/test/CodeGen/X86/tail-dup-merge-loop-headers.ll >>> llvm/trunk/test/CodeGen/X86/tailcall-mem-intrinsics.ll >>> llvm/trunk/test/CodeGen/X86/tlv-1.ll >>> llvm/trunk/test/CodeGen/X86/unaligned-load.ll >>> llvm/trunk/test/CodeGen/X86/unused_stackslots.ll >>> llvm/trunk/test/CodeGen/X86/unwindraise.ll >>> llvm/trunk/test/CodeGen/X86/variable-sized-darwin-bzero.ll >>> llvm/trunk/test/CodeGen/X86/vectorcall.ll >>> llvm/trunk/test/CodeGen/X86/x86-64-static-relo-movl.ll >>> llvm/trunk/test/CodeGen/X86/x86-repmov-copy-eflags.ll >>> llvm/trunk/test/CodeGen/XCore/memcpy.ll >>> llvm/trunk/test/DebugInfo/AArch64/frameindices.ll >>> llvm/trunk/test/DebugInfo/COFF/types-array.ll >>> llvm/trunk/test/DebugInfo/Generic/2010-10-01-crash.ll >>> llvm/trunk/test/DebugInfo/X86/array.ll >>> llvm/trunk/test/DebugInfo/X86/array2.ll >>> llvm/trunk/test/DebugInfo/X86/debug-ranges-offset.ll >>> llvm/trunk/test/DebugInfo/X86/pieces-2.ll >>> llvm/trunk/test/DebugInfo/X86/pieces-3.ll >>> llvm/trunk/test/DebugInfo/X86/safestack-byval.ll >>> llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll >>> llvm/trunk/test/DebugInfo/X86/sroasplit-1.ll >>> llvm/trunk/test/DebugInfo/X86/sroasplit-2.ll >>> llvm/trunk/test/DebugInfo/X86/sroasplit-4.ll >>> llvm/trunk/test/DebugInfo/X86/sroasplit-5.ll >>> llvm/trunk/test/DebugInfo/X86/sroasplit-dbg-declare.ll >>> llvm/trunk/test/Instrumentation/AddressSanitizer/basic.ll >>> llvm/trunk/test/Instrumentation/AddressSanitizer/stack-poiso >>> ning-byval-args.ll >>> llvm/trunk/test/Instrumentation/DataFlowSanitizer/memset.ll >>> (145 more files...) >>> >>> >>> >>> _______________________________________________ >>> llvm-commits mailing list >>> llvm-commits at lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits >>> >> >> >> >> -- >> *Alexandre Isoard* >> <memcopy.sed>_______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> >> > > > -- > *Alexandre Isoard* > > >-- *Alexandre Isoard* -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180124/4de1e4c1/attachment.html>
Daniel Neilson via llvm-dev
2018-Jan-25 03:40 UTC
[llvm-dev] [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
Good question. AFAIK, the IR-printer doesn’t understand the semantics of parameter attributes. In this case, it only knows that there is an attribute on the parameter that is integer valued (with value 1) and that has the name “align”, so it prints it out. If we don’t want it printing out ‘align 1’ then it’s up to us to not set the alignment parameter attribute to a value if that value would be 1. If preferred, it would be easy enough to change the behaviour for the memory intrinsics to only set the attribute to a value if an alignment greater than 1 is supplied. It’d keep the text in the IR a little cleaner/cleaner, and not change functionality… Thoughts/opinions, anyone? -Daniel On Jan 24, 2018, at 9:24 PM, Alexandre Isoard <alexandre.isoard at gmail.com<mailto:alexandre.isoard at gmail.com>> wrote: Yes, all that is correct. My question is more a long term question: why do the .ll printer specify the alignment if it is equivalent to the default one? That is, it seems the sed script expect the printer to not specify it (this would match the load/store behavior), but the ll-printer does specify it, which either means the printer is not ideal on this case and I should fix it, or in this case the ABI alignment is not what I think it is, then I should fix the test-cases. I'm not sure which side is correct. On Wed, Jan 24, 2018 at 7:11 PM, Daniel Neilson <dneilson at azul.com<mailto:dneilson at azul.com>> wrote: Hi Alexandre, Before the change you would have been expecting one of the following, correct? a) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* [[APTR]], i64 2048, i32 0, i1 false) b) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* [[APTR]], i64 2048, i32 1, i1 false) Functionally, (a) & (b) are both saying that the src & dest pointers are 1-byte aligned; i.e. they’re both basically saying “I don’t really have any better information on alignment, so we’ll go with 1-byte aligned since it can’t be less aligned than that” After the patch, you’re seeing: i) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 bitcast ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 align 1 addrspace(1)* [[APTR]], i64 2048, i1 false) but your IR test, that you ran the sed script on, is saying to expect: ii) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* [[APTR]], i64 2048, i1 false) Is that correct? Just like (a) & (b), both (i) & (ii) are functionally equivalent. The script rule that would have changed that was: s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), i8([^*]*)\* (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i64(i8\3* \4, i8\5* \6, i64 \7, i1 \8)~g It was converting both (a) and (b) into (ii). If that’s not what you’re seeing/wanting, then you can just add the ‘align 1’s into your test’s CHECK pattern, or alter the sed script by changing “..., i32 [01], i1...” into “..., i32 0, i1…" -Daniel On Jan 24, 2018, at 8:47 PM, Alexandre Isoard <alexandre.isoard at gmail.com<mailto:alexandre.isoard at gmail.com>> wrote: Thanks, that worked like a charm except for the following: llvm generate: call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 bitcast ([512 x float] addrspace(3)* @a_scratchpad to i8 addrspace(3)*), i8 addrspace(1)* align 1 %0, i64 2048, i1 false) And we expected: call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* [[APTR]], i64 2048, i1 false) Notice the presence of "align 1". I'm not sure which side is correct, isn't it equivalent (that is, this is the natural ABI alignment of that type)? Here is my datalayout: target datalayout = "e-m:e-i64:64-n8:16:32:64-S128-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" 2018-01-23 20:14 GMT-08:00 Daniel Neilson <dneilson at azul.com<mailto:dneilson at azul.com>>: Hi Alexandre, The script uses extended-sed syntax, so you need to run sed with the -E option. For example, when preparing the patch I created a file ( script.sed ) containing all of the lines that I copied into the commit message. Then, I ran this bash one-liner from the test directory: for f in $(find . -name '*.ll'); do sed -E -i ‘.sedbak' -f script.sed $f; done When I was happy with the results, then: find . -name ‘*.sedbak’ --exec rm -f {} \; Please let me know if that doesn’t work for you. -Daniel On Jan 23, 2018, at 8:33 PM, Alexandre Isoard via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: Hello, Is there a script to update those test cases? I see mention of a sed script in the commit message but when I try it (see attached) on sed I get the following error: sed: file script line 2: invalid reference \3 on `s' command's RHS Did I lose something in a copy-paste? Is it not really a sed script? How do I run it? On Fri, Jan 19, 2018 at 9:15 AM, Daniel Neilson via Phabricator via llvm-commits <llvm-commits at lists.llvm.org<mailto:llvm-commits at lists.llvm.org>> wrote: This revision was automatically updated to reflect the committed changes. Closed by commit rL322965: Remove alignment argument from memcpy/memmove/memset in favour of alignment… (authored by dneilson, committed by ). Repository: rL LLVM https://reviews.llvm.org/D41675 Files: llvm/trunk/docs/LangRef.rst llvm/trunk/include/llvm/IR/IntrinsicInst.h llvm/trunk/include/llvm/IR/Intrinsics.td<http://rinsics.td/> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp llvm/trunk/lib/IR/AutoUpgrade.cpp llvm/trunk/lib/IR/IRBuilder.cpp llvm/trunk/lib/IR/Verifier.cpp llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp llvm/trunk/lib/Target/ARM/ARMFastISel.cpp llvm/trunk/lib/Target/Mips/MipsFastISel.cpp llvm/trunk/lib/Target/X86/X86FastISel.cpp llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp llvm/trunk/test/Analysis/AliasSet/memtransfer.ll llvm/trunk/test/Analysis/BasicAA/assume.ll llvm/trunk/test/Analysis/BasicAA/cs-cs.ll llvm/trunk/test/Analysis/BasicAA/gep-and-alias.ll llvm/trunk/test/Analysis/BasicAA/getmodrefinfo-cs-cs.ll llvm/trunk/test/Analysis/BasicAA/guards.ll llvm/trunk/test/Analysis/BasicAA/modref.ll llvm/trunk/test/Analysis/CallGraph/no-intrinsics.ll llvm/trunk/test/Analysis/ConstantFolding/gep-constanfolding-error.ll llvm/trunk/test/Analysis/DependenceAnalysis/Preliminary.ll llvm/trunk/test/Analysis/GlobalsModRef/memset-escape.ll llvm/trunk/test/Analysis/GlobalsModRef/no-escape.ll llvm/trunk/test/Analysis/GlobalsModRef/pr12351.ll llvm/trunk/test/Analysis/GlobalsModRef/volatile-instrs.ll llvm/trunk/test/Analysis/Lint/noalias-byval.ll llvm/trunk/test/Analysis/MemorySSA/basicaa-memcpy.ll llvm/trunk/test/Analysis/ScalarEvolution/avoid-smax-1.ll llvm/trunk/test/Analysis/ScalarEvolution/trip-count.ll llvm/trunk/test/Analysis/ScalarEvolution/trip-count3.ll llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll llvm/trunk/test/Bitcode/standardCIntrinsic.3.2.ll llvm/trunk/test/Bitcode/upgrade-memory-intrinsics.ll llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll llvm/trunk/test/CodeGen/AArch64/PBQP-csr.ll llvm/trunk/test/CodeGen/AArch64/aarch64-DAGCombine-findBetterNeighborChains-crash.ll llvm/trunk/test/CodeGen/AArch64/arm64-2012-05-07-MemcpyAlignBug.ll llvm/trunk/test/CodeGen/AArch64/arm64-abi-varargs.ll llvm/trunk/test/CodeGen/AArch64/arm64-abi_align.ll llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll llvm/trunk/test/CodeGen/AArch64/arm64-memcpy-inline.ll llvm/trunk/test/CodeGen/AArch64/arm64-memset-inline.ll llvm/trunk/test/CodeGen/AArch64/arm64-memset-to-bzero.ll llvm/trunk/test/CodeGen/AArch64/arm64-misaligned-memcpy-inline.ll llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A53.ll llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A57.ll llvm/trunk/test/CodeGen/AArch64/arm64-stur.ll llvm/trunk/test/CodeGen/AArch64/arm64-virtual_base.ll llvm/trunk/test/CodeGen/AArch64/fast-isel-memcpy.ll llvm/trunk/test/CodeGen/AArch64/func-argpassing.ll llvm/trunk/test/CodeGen/AArch64/ldp-stp-scaled-unscaled-pairs.ll llvm/trunk/test/CodeGen/AArch64/ldst-paired-aliasing.ll llvm/trunk/test/CodeGen/AArch64/ldst-zero.ll llvm/trunk/test/CodeGen/AArch64/machine-combiner-madd.ll llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll llvm/trunk/test/CodeGen/AArch64/merge-store-dependency.ll llvm/trunk/test/CodeGen/AArch64/mergestores_noimplicitfloat.ll llvm/trunk/test/CodeGen/AArch64/misched-stp.ll llvm/trunk/test/CodeGen/AArch64/pr33172.ll llvm/trunk/test/CodeGen/AArch64/tailcall-mem-intrinsics.ll llvm/trunk/test/CodeGen/AArch64/tailcall-string-rvo.ll llvm/trunk/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll llvm/trunk/test/CodeGen/AMDGPU/lds-alignment.ll llvm/trunk/test/CodeGen/AMDGPU/llvm.memcpy.ll llvm/trunk/test/CodeGen/AMDGPU/lower-mem-intrinsics.ll llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-mem-intrinsics.ll llvm/trunk/test/CodeGen/AMDGPU/stack-size-overflow.ll llvm/trunk/test/CodeGen/ARM/2009-03-07-SpillerBug.ll llvm/trunk/test/CodeGen/ARM/2011-03-10-DAGCombineCrash.ll llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-inline.ll llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-with-neon.ll llvm/trunk/test/CodeGen/ARM/2012-04-24-SplitEHCriticalEdge.ll llvm/trunk/test/CodeGen/ARM/Windows/memset.ll llvm/trunk/test/CodeGen/ARM/Windows/no-aeabi.ll llvm/trunk/test/CodeGen/ARM/arm-eabi.ll llvm/trunk/test/CodeGen/ARM/constantpool-promote-ldrh.ll llvm/trunk/test/CodeGen/ARM/constantpool-promote.ll llvm/trunk/test/CodeGen/ARM/crash-O0.ll llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll llvm/trunk/test/CodeGen/ARM/dyn-stackalloc.ll llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll llvm/trunk/test/CodeGen/ARM/interval-update-remat.ll llvm/trunk/test/CodeGen/ARM/ldm-stm-base-materialization.ll llvm/trunk/test/CodeGen/ARM/machine-cse-cmp.ll llvm/trunk/test/CodeGen/ARM/memcpy-inline.ll llvm/trunk/test/CodeGen/ARM/memcpy-ldm-stm.ll llvm/trunk/test/CodeGen/ARM/memcpy-no-inline.ll llvm/trunk/test/CodeGen/ARM/memfunc.ll llvm/trunk/test/CodeGen/ARM/memset-inline.ll llvm/trunk/test/CodeGen/ARM/stack-protector-bmovpcb_call.ll llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll llvm/trunk/test/CodeGen/ARM/tailcall-mem-intrinsics.ll llvm/trunk/test/CodeGen/AVR/std-ldd-immediate-overflow.ll llvm/trunk/test/CodeGen/BPF/byval.ll llvm/trunk/test/CodeGen/BPF/ex1.ll llvm/trunk/test/CodeGen/BPF/fi_ri.ll llvm/trunk/test/CodeGen/BPF/reloc.ll llvm/trunk/test/CodeGen/BPF/rodata_1.ll llvm/trunk/test/CodeGen/BPF/rodata_2.ll llvm/trunk/test/CodeGen/BPF/rodata_3.ll llvm/trunk/test/CodeGen/BPF/rodata_4.ll llvm/trunk/test/CodeGen/BPF/sanity.ll llvm/trunk/test/CodeGen/BPF/undef.ll llvm/trunk/test/CodeGen/BPF/warn-call.ll llvm/trunk/test/CodeGen/Generic/ForceStackAlign.ll llvm/trunk/test/CodeGen/Generic/invalid-memcpy.ll llvm/trunk/test/CodeGen/Hexagon/adjust-latency-stackST.ll llvm/trunk/test/CodeGen/Hexagon/branchfolder-keep-impdef.ll llvm/trunk/test/CodeGen/Hexagon/early-if-conversion-bug1.ll llvm/trunk/test/CodeGen/Hexagon/mem-fi-add.ll llvm/trunk/test/CodeGen/Hexagon/memcpy-likely-aligned.ll llvm/trunk/test/CodeGen/Hexagon/rdf-filter-defs.ll llvm/trunk/test/CodeGen/Hexagon/store-imm-stack-object.ll llvm/trunk/test/CodeGen/Hexagon/tail-call-mem-intrinsics.ll llvm/trunk/test/CodeGen/MSP430/memset.ll llvm/trunk/test/CodeGen/Mips/2012-12-12-ExpandMemcpy.ll llvm/trunk/test/CodeGen/Mips/Fast-ISel/memtest1.ll llvm/trunk/test/CodeGen/Mips/biggot.ll llvm/trunk/test/CodeGen/Mips/cconv/arguments-small-structures-bigger-than-32bits.ll llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-structs-byte.ll llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-structs-combinations.ll llvm/trunk/test/CodeGen/Mips/cconv/return-struct.ll llvm/trunk/test/CodeGen/Mips/largeimmprinting.ll llvm/trunk/test/CodeGen/Mips/long-calls.ll llvm/trunk/test/CodeGen/Mips/memcpy.ll llvm/trunk/test/CodeGen/Mips/pr33978.ll llvm/trunk/test/CodeGen/Mips/tailcall/tailcall.ll llvm/trunk/test/CodeGen/NVPTX/lower-aggr-copies.ll llvm/trunk/test/CodeGen/PowerPC/2011-12-05-NoSpillDupCR.ll llvm/trunk/test/CodeGen/PowerPC/2011-12-06-SpillAndRestoreCR.ll llvm/trunk/test/CodeGen/PowerPC/MMO-flags-assertion.ll llvm/trunk/test/CodeGen/PowerPC/aantidep-inline-asm-use.ll llvm/trunk/test/CodeGen/PowerPC/ctrloop-reg.ll llvm/trunk/test/CodeGen/PowerPC/emptystruct.ll llvm/trunk/test/CodeGen/PowerPC/fsl-e500mc.ll llvm/trunk/test/CodeGen/PowerPC/fsl-e5500.ll llvm/trunk/test/CodeGen/PowerPC/glob-comp-aa-crash.ll llvm/trunk/test/CodeGen/PowerPC/isel-rc-nox0.ll llvm/trunk/test/CodeGen/PowerPC/licm-remat.ll llvm/trunk/test/CodeGen/PowerPC/lxv-aligned-stack-slots.ll llvm/trunk/test/CodeGen/PowerPC/memcpy-vec.ll llvm/trunk/test/CodeGen/PowerPC/memcpy_dereferenceable.ll llvm/trunk/test/CodeGen/PowerPC/memset-nc-le.ll llvm/trunk/test/CodeGen/PowerPC/memset-nc.ll llvm/trunk/test/CodeGen/PowerPC/merge-st-chain-op.ll llvm/trunk/test/CodeGen/PowerPC/ppc-empty-fs.ll llvm/trunk/test/CodeGen/PowerPC/pr27350.ll llvm/trunk/test/CodeGen/PowerPC/resolvefi-basereg.ll llvm/trunk/test/CodeGen/PowerPC/resolvefi-disp.ll llvm/trunk/test/CodeGen/PowerPC/structsinmem.ll llvm/trunk/test/CodeGen/PowerPC/structsinregs.ll llvm/trunk/test/CodeGen/PowerPC/stwu8.ll llvm/trunk/test/CodeGen/PowerPC/tailcall-string-rvo.ll llvm/trunk/test/CodeGen/PowerPC/toc-load-sched-bug.ll llvm/trunk/test/CodeGen/RISCV/frame.ll llvm/trunk/test/CodeGen/SystemZ/dag-combine-02.ll llvm/trunk/test/CodeGen/SystemZ/loop-01.ll llvm/trunk/test/CodeGen/SystemZ/loop-03.ll llvm/trunk/test/CodeGen/SystemZ/memcpy-01.ll llvm/trunk/test/CodeGen/SystemZ/memset-01.ll llvm/trunk/test/CodeGen/SystemZ/memset-02.ll llvm/trunk/test/CodeGen/SystemZ/memset-03.ll llvm/trunk/test/CodeGen/SystemZ/memset-04.ll llvm/trunk/test/CodeGen/SystemZ/tail-call-mem-intrinsics.ll llvm/trunk/test/CodeGen/Thumb/2011-05-11-DAGLegalizer.ll llvm/trunk/test/CodeGen/Thumb/dyn-stackalloc.ll llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization-thumb2.ll llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization.ll llvm/trunk/test/CodeGen/Thumb/stack-coloring-without-frame-ptr.ll llvm/trunk/test/CodeGen/Thumb2/2009-08-04-SubregLoweringBug.ll llvm/trunk/test/CodeGen/Thumb2/2012-01-13-CBNZBug.ll llvm/trunk/test/CodeGen/WebAssembly/global.ll llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll llvm/trunk/test/CodeGen/X86/2007-10-15-CoalescerCrash.ll llvm/trunk/test/CodeGen/X86/2009-01-25-NoSSE.ll llvm/trunk/test/CodeGen/X86/2009-11-16-UnfoldMemOpBug.ll llvm/trunk/test/CodeGen/X86/2010-04-08-CoalescerBug.ll llvm/trunk/test/CodeGen/X86/2010-04-21-CoalescerBug.ll llvm/trunk/test/CodeGen/X86/2010-06-25-CoalescerSubRegDefDead.ll llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll llvm/trunk/test/CodeGen/X86/2012-01-10-UndefExceptionEdge.ll llvm/trunk/test/CodeGen/X86/alignment-2.ll llvm/trunk/test/CodeGen/X86/bug26810.ll llvm/trunk/test/CodeGen/X86/darwin-bzero.ll llvm/trunk/test/CodeGen/X86/fast-isel-call.ll llvm/trunk/test/CodeGen/X86/fast-isel-deadcode.ll llvm/trunk/test/CodeGen/X86/fast-isel-x86-64.ll llvm/trunk/test/CodeGen/X86/force-align-stack-alloca.ll llvm/trunk/test/CodeGen/X86/immediate_merging.ll llvm/trunk/test/CodeGen/X86/immediate_merging64.ll llvm/trunk/test/CodeGen/X86/lea-opt-memop-check-1.ll llvm/trunk/test/CodeGen/X86/load-slice.ll llvm/trunk/test/CodeGen/X86/lsr-normalization.ll llvm/trunk/test/CodeGen/X86/mcu-abi.ll llvm/trunk/test/CodeGen/X86/mem-intrin-base-reg.ll llvm/trunk/test/CodeGen/X86/memcpy-2.ll llvm/trunk/test/CodeGen/X86/memcpy-from-string.ll llvm/trunk/test/CodeGen/X86/memcpy.ll llvm/trunk/test/CodeGen/X86/memset-2.ll llvm/trunk/test/CodeGen/X86/memset-3.ll llvm/trunk/test/CodeGen/X86/memset-nonzero.ll llvm/trunk/test/CodeGen/X86/memset-sse-stack-realignment.ll llvm/trunk/test/CodeGen/X86/memset.ll llvm/trunk/test/CodeGen/X86/memset64-on-x86-32.ll llvm/trunk/test/CodeGen/X86/misaligned-memset.ll llvm/trunk/test/CodeGen/X86/misched-new.ll llvm/trunk/test/CodeGen/X86/negate-add-zero.ll llvm/trunk/test/CodeGen/X86/optimize-max-0.ll llvm/trunk/test/CodeGen/X86/pr11985.ll llvm/trunk/test/CodeGen/X86/pr14333.ll llvm/trunk/test/CodeGen/X86/pr34088.ll llvm/trunk/test/CodeGen/X86/ragreedy-hoist-spill.ll llvm/trunk/test/CodeGen/X86/regparm.ll llvm/trunk/test/CodeGen/X86/remat-fold-load.ll llvm/trunk/test/CodeGen/X86/slow-unaligned-mem.ll llvm/trunk/test/CodeGen/X86/small-byval-memcpy.ll llvm/trunk/test/CodeGen/X86/stack-align.ll llvm/trunk/test/CodeGen/X86/stack-protector.ll llvm/trunk/test/CodeGen/X86/tail-dup-merge-loop-headers.ll llvm/trunk/test/CodeGen/X86/tailcall-mem-intrinsics.ll llvm/trunk/test/CodeGen/X86/tlv-1.ll llvm/trunk/test/CodeGen/X86/unaligned-load.ll llvm/trunk/test/CodeGen/X86/unused_stackslots.ll llvm/trunk/test/CodeGen/X86/unwindraise.ll llvm/trunk/test/CodeGen/X86/variable-sized-darwin-bzero.ll llvm/trunk/test/CodeGen/X86/vectorcall.ll llvm/trunk/test/CodeGen/X86/x86-64-static-relo-movl.ll llvm/trunk/test/CodeGen/X86/x86-repmov-copy-eflags.ll llvm/trunk/test/CodeGen/XCore/memcpy.ll llvm/trunk/test/DebugInfo/AArch64/frameindices.ll llvm/trunk/test/DebugInfo/COFF/types-array.ll llvm/trunk/test/DebugInfo/Generic/2010-10-01-crash.ll llvm/trunk/test/DebugInfo/X86/array.ll llvm/trunk/test/DebugInfo/X86/array2.ll llvm/trunk/test/DebugInfo/X86/debug-ranges-offset.ll llvm/trunk/test/DebugInfo/X86/pieces-2.ll llvm/trunk/test/DebugInfo/X86/pieces-3.ll llvm/trunk/test/DebugInfo/X86/safestack-byval.ll llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll llvm/trunk/test/DebugInfo/X86/sroasplit-1.ll llvm/trunk/test/DebugInfo/X86/sroasplit-2.ll llvm/trunk/test/DebugInfo/X86/sroasplit-4.ll llvm/trunk/test/DebugInfo/X86/sroasplit-5.ll llvm/trunk/test/DebugInfo/X86/sroasplit-dbg-declare.ll llvm/trunk/test/Instrumentation/AddressSanitizer/basic.ll llvm/trunk/test/Instrumentation/AddressSanitizer/stack-poisoning-byval-args.ll llvm/trunk/test/Instrumentation/DataFlowSanitizer/memset.ll (145 more files...) _______________________________________________ llvm-commits mailing list llvm-commits at lists.llvm.org<mailto:llvm-commits at lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits -- Alexandre Isoard <memcopy.sed>_______________________________________________ LLVM Developers mailing list llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev -- Alexandre Isoard -- Alexandre Isoard -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180125/81c855d5/attachment-0001.html>
Alexandre Isoard via llvm-dev
2018-Jan-25 03:46 UTC
[llvm-dev] [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
Ah, I see. That means I should just skip the setting of the alignment if it matches the ABI (this one is produced by a custom pass). Thanks. Note that the default ABI alignment might be bigger than 1! On Wed, Jan 24, 2018 at 7:40 PM, Daniel Neilson <dneilson at azul.com> wrote:> Good question. AFAIK, the IR-printer doesn’t understand the semantics of > parameter attributes. In this case, it only knows that there is an > attribute on the parameter that is integer valued (with value 1) and that > has the name “align”, so it prints it out. If we don’t want it printing out > ‘align 1’ then it’s up to us to not set the alignment parameter attribute > to a value if that value would be 1. > > If preferred, it would be easy enough to change the behaviour for the > memory intrinsics to only set the attribute to a value if an alignment > greater than 1 is supplied. It’d keep the text in the IR a little > cleaner/cleaner, and not change functionality… > > Thoughts/opinions, anyone? > > -Daniel > > > On Jan 24, 2018, at 9:24 PM, Alexandre Isoard <alexandre.isoard at gmail.com> > wrote: > > Yes, all that is correct. > > My question is more a long term question: why do the .ll printer specify > the alignment if it is equivalent to the default one? > That is, it seems the sed script expect the printer to not specify it > (this would match the load/store behavior), but the ll-printer does specify > it, which either means the printer is not ideal on this case and I should > fix it, or in this case the ABI alignment is not what I think it is, then I > should fix the test-cases. > > I'm not sure which side is correct. > > On Wed, Jan 24, 2018 at 7:11 PM, Daniel Neilson <dneilson at azul.com> wrote: > >> Hi Alexandre, >> Before the change you would have been expecting one of the following, >> correct? >> a) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x >> float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* >> [[APTR]], i64 2048, i32 0, i1 false) >> b) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x >> float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* >> [[APTR]], i64 2048, i32 1, i1 false) >> >> Functionally, (a) & (b) are both saying that the src & dest pointers are >> 1-byte aligned; i.e. they’re both basically saying “I don’t really have any >> better information on alignment, so we’ll go with 1-byte aligned since it >> can’t be less aligned than that” >> >> After the patch, you’re seeing: >> i) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 bitcast >> ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 align 1 >> addrspace(1)* [[APTR]], i64 2048, i1 false) >> but your IR test, that you ran the sed script on, is saying to expect: >> ii) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 >> x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* >> [[APTR]], i64 2048, i1 false) >> >> Is that correct? Just like (a) & (b), both (i) & (ii) are functionally >> equivalent. >> >> The script rule that would have changed that was: >> s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), >> i8([^*]*)\* (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void @llvm.mem\1.p\2i64(i8\3* >> \4, i8\5* \6, i64 \7, i1 \8)~g >> >> It was converting both (a) and (b) into (ii). If that’s not what you’re >> seeing/wanting, then you can just add the ‘align 1’s into your test’s CHECK >> pattern, or alter the sed script by changing “..., i32 [01], i1...” >> into “..., i32 0, i1…" >> >> -Daniel >> >> On Jan 24, 2018, at 8:47 PM, Alexandre Isoard <alexandre.isoard at gmail.com> >> wrote: >> >> Thanks, that worked like a charm except for the following: >> >> llvm generate: >> >> call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 bitcast >> ([512 x float] addrspace(3)* @a_scratchpad to i8 addrspace(3)*), i8 >> addrspace(1)* align 1 %0, i64 2048, i1 false) >> >> And we expected: >> >> call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast ([512 x >> float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 addrspace(1)* >> [[APTR]], i64 2048, i1 false) >> >> Notice the presence of "align 1". I'm not sure which side is correct, >> isn't it equivalent (that is, this is the natural ABI alignment of that >> type)? >> >> Here is my datalayout: >> >> target datalayout = "e-m:e-i64:64-n8:16:32:64-S128 >> -v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512 >> :512-v1024:1024" >> >> >> 2018-01-23 20:14 GMT-08:00 Daniel Neilson <dneilson at azul.com>: >> >>> Hi Alexandre, >>> The script uses extended-sed syntax, so you need to run sed with the -E >>> option. >>> >>> For example, when preparing the patch I created a file ( script.sed ) >>> containing all of the lines that I copied into the commit message. Then, I >>> ran this bash one-liner from the test directory: >>> for f in $(find . -name '*.ll'); do sed -E -i ‘.sedbak' -f >>> script.sed $f; done >>> >>> When I was happy with the results, then: find . -name ‘*.sedbak’ --exec >>> rm -f {} \; >>> >>> Please let me know if that doesn’t work for you. >>> >>> -Daniel >>> >>> On Jan 23, 2018, at 8:33 PM, Alexandre Isoard via llvm-dev < >>> llvm-dev at lists.llvm.org> wrote: >>> >>> Hello, >>> >>> Is there a script to update those test cases? I see mention of a sed >>> script in the commit message but when I try it (see attached) on sed I get >>> the following error: >>> >>> sed: file script line 2: invalid reference \3 on `s' command's RHS >>> >>> Did I lose something in a copy-paste? Is it not really a sed script? How >>> do I run it? >>> >>> >>> On Fri, Jan 19, 2018 at 9:15 AM, Daniel Neilson via Phabricator via >>> llvm-commits <llvm-commits at lists.llvm.org> wrote: >>> >>>> This revision was automatically updated to reflect the committed >>>> changes. >>>> Closed by commit rL322965: Remove alignment argument from >>>> memcpy/memmove/memset in favour of alignment… (authored by dneilson, >>>> committed by ). >>>> >>>> Repository: >>>> rL LLVM >>>> >>>> https://reviews.llvm.org/D41675 >>>> >>>> Files: >>>> llvm/trunk/docs/LangRef.rst >>>> llvm/trunk/include/llvm/IR/IntrinsicInst.h >>>> llvm/trunk/include/llvm/IR/Intrinsics.td >>>> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp >>>> llvm/trunk/lib/IR/AutoUpgrade.cpp >>>> llvm/trunk/lib/IR/IRBuilder.cpp >>>> llvm/trunk/lib/IR/Verifier.cpp >>>> llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp >>>> llvm/trunk/lib/Target/ARM/ARMFastISel.cpp >>>> llvm/trunk/lib/Target/Mips/MipsFastISel.cpp >>>> llvm/trunk/lib/Target/X86/X86FastISel.cpp >>>> llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp >>>> llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp >>>> llvm/trunk/test/Analysis/AliasSet/memtransfer.ll >>>> llvm/trunk/test/Analysis/BasicAA/assume.ll >>>> llvm/trunk/test/Analysis/BasicAA/cs-cs.ll >>>> llvm/trunk/test/Analysis/BasicAA/gep-and-alias.ll >>>> llvm/trunk/test/Analysis/BasicAA/getmodrefinfo-cs-cs.ll >>>> llvm/trunk/test/Analysis/BasicAA/guards.ll >>>> llvm/trunk/test/Analysis/BasicAA/modref.ll >>>> llvm/trunk/test/Analysis/CallGraph/no-intrinsics.ll >>>> llvm/trunk/test/Analysis/ConstantFolding/gep-constanfolding-error.ll >>>> llvm/trunk/test/Analysis/DependenceAnalysis/Preliminary.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/memset-escape.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/no-escape.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/pr12351.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/volatile-instrs.ll >>>> llvm/trunk/test/Analysis/Lint/noalias-byval.ll >>>> llvm/trunk/test/Analysis/MemorySSA/basicaa-memcpy.ll >>>> llvm/trunk/test/Analysis/ScalarEvolution/avoid-smax-1.ll >>>> llvm/trunk/test/Analysis/ScalarEvolution/trip-count.ll >>>> llvm/trunk/test/Analysis/ScalarEvolution/trip-count3.ll >>>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll >>>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll >>>> llvm/trunk/test/Bitcode/standardCIntrinsic.3.2.ll >>>> llvm/trunk/test/Bitcode/upgrade-memory-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll >>>> llvm/trunk/test/CodeGen/AArch64/PBQP-csr.ll >>>> llvm/trunk/test/CodeGen/AArch64/aarch64-DAGCombine-findBette >>>> rNeighborChains-crash.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-2012-05-07-MemcpyAlignBug.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-abi-varargs.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-abi_align.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-memcpy-inline.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-memset-inline.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-memset-to-bzero.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-misaligned-memcpy-inline.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A53.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A57.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-stur.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-virtual_base.ll >>>> llvm/trunk/test/CodeGen/AArch64/fast-isel-memcpy.ll >>>> llvm/trunk/test/CodeGen/AArch64/func-argpassing.ll >>>> llvm/trunk/test/CodeGen/AArch64/ldp-stp-scaled-unscaled-pairs.ll >>>> llvm/trunk/test/CodeGen/AArch64/ldst-paired-aliasing.ll >>>> llvm/trunk/test/CodeGen/AArch64/ldst-zero.ll >>>> llvm/trunk/test/CodeGen/AArch64/machine-combiner-madd.ll >>>> llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll >>>> llvm/trunk/test/CodeGen/AArch64/merge-store-dependency.ll >>>> llvm/trunk/test/CodeGen/AArch64/mergestores_noimplicitfloat.ll >>>> llvm/trunk/test/CodeGen/AArch64/misched-stp.ll >>>> llvm/trunk/test/CodeGen/AArch64/pr33172.ll >>>> llvm/trunk/test/CodeGen/AArch64/tailcall-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AArch64/tailcall-string-rvo.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/lds-alignment.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/llvm.memcpy.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/lower-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/stack-size-overflow.ll >>>> llvm/trunk/test/CodeGen/ARM/2009-03-07-SpillerBug.ll >>>> llvm/trunk/test/CodeGen/ARM/2011-03-10-DAGCombineCrash.ll >>>> llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-with-neon.ll >>>> llvm/trunk/test/CodeGen/ARM/2012-04-24-SplitEHCriticalEdge.ll >>>> llvm/trunk/test/CodeGen/ARM/Windows/memset.ll >>>> llvm/trunk/test/CodeGen/ARM/Windows/no-aeabi.ll >>>> llvm/trunk/test/CodeGen/ARM/arm-eabi.ll >>>> llvm/trunk/test/CodeGen/ARM/constantpool-promote-ldrh.ll >>>> llvm/trunk/test/CodeGen/ARM/constantpool-promote.ll >>>> llvm/trunk/test/CodeGen/ARM/crash-O0.ll >>>> llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll >>>> llvm/trunk/test/CodeGen/ARM/dyn-stackalloc.ll >>>> llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll >>>> llvm/trunk/test/CodeGen/ARM/interval-update-remat.ll >>>> llvm/trunk/test/CodeGen/ARM/ldm-stm-base-materialization.ll >>>> llvm/trunk/test/CodeGen/ARM/machine-cse-cmp.ll >>>> llvm/trunk/test/CodeGen/ARM/memcpy-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/memcpy-ldm-stm.ll >>>> llvm/trunk/test/CodeGen/ARM/memcpy-no-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/memfunc.ll >>>> llvm/trunk/test/CodeGen/ARM/memset-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/stack-protector-bmovpcb_call.ll >>>> llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll >>>> llvm/trunk/test/CodeGen/ARM/tailcall-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AVR/std-ldd-immediate-overflow.ll >>>> llvm/trunk/test/CodeGen/BPF/byval.ll >>>> llvm/trunk/test/CodeGen/BPF/ex1.ll >>>> llvm/trunk/test/CodeGen/BPF/fi_ri.ll >>>> llvm/trunk/test/CodeGen/BPF/reloc.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_1.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_2.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_3.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_4.ll >>>> llvm/trunk/test/CodeGen/BPF/sanity.ll >>>> llvm/trunk/test/CodeGen/BPF/undef.ll >>>> llvm/trunk/test/CodeGen/BPF/warn-call.ll >>>> llvm/trunk/test/CodeGen/Generic/ForceStackAlign.ll >>>> llvm/trunk/test/CodeGen/Generic/invalid-memcpy.ll >>>> llvm/trunk/test/CodeGen/Hexagon/adjust-latency-stackST.ll >>>> llvm/trunk/test/CodeGen/Hexagon/branchfolder-keep-impdef.ll >>>> llvm/trunk/test/CodeGen/Hexagon/early-if-conversion-bug1.ll >>>> llvm/trunk/test/CodeGen/Hexagon/mem-fi-add.ll >>>> llvm/trunk/test/CodeGen/Hexagon/memcpy-likely-aligned.ll >>>> llvm/trunk/test/CodeGen/Hexagon/rdf-filter-defs.ll >>>> llvm/trunk/test/CodeGen/Hexagon/store-imm-stack-object.ll >>>> llvm/trunk/test/CodeGen/Hexagon/tail-call-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/MSP430/memset.ll >>>> llvm/trunk/test/CodeGen/Mips/2012-12-12-ExpandMemcpy.ll >>>> llvm/trunk/test/CodeGen/Mips/Fast-ISel/memtest1.ll >>>> llvm/trunk/test/CodeGen/Mips/biggot.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-small-structure >>>> s-bigger-than-32bits.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-s >>>> tructs-byte.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-s >>>> tructs-combinations.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/return-struct.ll >>>> llvm/trunk/test/CodeGen/Mips/largeimmprinting.ll >>>> llvm/trunk/test/CodeGen/Mips/long-calls.ll >>>> llvm/trunk/test/CodeGen/Mips/memcpy.ll >>>> llvm/trunk/test/CodeGen/Mips/pr33978.ll >>>> llvm/trunk/test/CodeGen/Mips/tailcall/tailcall.ll >>>> llvm/trunk/test/CodeGen/NVPTX/lower-aggr-copies.ll >>>> llvm/trunk/test/CodeGen/PowerPC/2011-12-05-NoSpillDupCR.ll >>>> llvm/trunk/test/CodeGen/PowerPC/2011-12-06-SpillAndRestoreCR.ll >>>> llvm/trunk/test/CodeGen/PowerPC/MMO-flags-assertion.ll >>>> llvm/trunk/test/CodeGen/PowerPC/aantidep-inline-asm-use.ll >>>> llvm/trunk/test/CodeGen/PowerPC/ctrloop-reg.ll >>>> llvm/trunk/test/CodeGen/PowerPC/emptystruct.ll >>>> llvm/trunk/test/CodeGen/PowerPC/fsl-e500mc.ll >>>> llvm/trunk/test/CodeGen/PowerPC/fsl-e5500.ll >>>> llvm/trunk/test/CodeGen/PowerPC/glob-comp-aa-crash.ll >>>> llvm/trunk/test/CodeGen/PowerPC/isel-rc-nox0.ll >>>> llvm/trunk/test/CodeGen/PowerPC/licm-remat.ll >>>> llvm/trunk/test/CodeGen/PowerPC/lxv-aligned-stack-slots.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memcpy-vec.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memcpy_dereferenceable.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memset-nc-le.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memset-nc.ll >>>> llvm/trunk/test/CodeGen/PowerPC/merge-st-chain-op.ll >>>> llvm/trunk/test/CodeGen/PowerPC/ppc-empty-fs.ll >>>> llvm/trunk/test/CodeGen/PowerPC/pr27350.ll >>>> llvm/trunk/test/CodeGen/PowerPC/resolvefi-basereg.ll >>>> llvm/trunk/test/CodeGen/PowerPC/resolvefi-disp.ll >>>> llvm/trunk/test/CodeGen/PowerPC/structsinmem.ll >>>> llvm/trunk/test/CodeGen/PowerPC/structsinregs.ll >>>> llvm/trunk/test/CodeGen/PowerPC/stwu8.ll >>>> llvm/trunk/test/CodeGen/PowerPC/tailcall-string-rvo.ll >>>> llvm/trunk/test/CodeGen/PowerPC/toc-load-sched-bug.ll >>>> llvm/trunk/test/CodeGen/RISCV/frame.ll >>>> llvm/trunk/test/CodeGen/SystemZ/dag-combine-02.ll >>>> llvm/trunk/test/CodeGen/SystemZ/loop-01.ll >>>> llvm/trunk/test/CodeGen/SystemZ/loop-03.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memcpy-01.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-01.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-02.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-03.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-04.ll >>>> llvm/trunk/test/CodeGen/SystemZ/tail-call-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/Thumb/2011-05-11-DAGLegalizer.ll >>>> llvm/trunk/test/CodeGen/Thumb/dyn-stackalloc.ll >>>> llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization-thumb2.ll >>>> llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization.ll >>>> llvm/trunk/test/CodeGen/Thumb/stack-coloring-without-frame-ptr.ll >>>> llvm/trunk/test/CodeGen/Thumb2/2009-08-04-SubregLoweringBug.ll >>>> llvm/trunk/test/CodeGen/Thumb2/2012-01-13-CBNZBug.ll >>>> llvm/trunk/test/CodeGen/WebAssembly/global.ll >>>> llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/X86/2007-10-15-CoalescerCrash.ll >>>> llvm/trunk/test/CodeGen/X86/2009-01-25-NoSSE.ll >>>> llvm/trunk/test/CodeGen/X86/2009-11-16-UnfoldMemOpBug.ll >>>> llvm/trunk/test/CodeGen/X86/2010-04-08-CoalescerBug.ll >>>> llvm/trunk/test/CodeGen/X86/2010-04-21-CoalescerBug.ll >>>> llvm/trunk/test/CodeGen/X86/2010-06-25-CoalescerSubRegDefDead.ll >>>> llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll >>>> llvm/trunk/test/CodeGen/X86/2012-01-10-UndefExceptionEdge.ll >>>> llvm/trunk/test/CodeGen/X86/alignment-2.ll >>>> llvm/trunk/test/CodeGen/X86/bug26810.ll >>>> llvm/trunk/test/CodeGen/X86/darwin-bzero.ll >>>> llvm/trunk/test/CodeGen/X86/fast-isel-call.ll >>>> llvm/trunk/test/CodeGen/X86/fast-isel-deadcode.ll >>>> llvm/trunk/test/CodeGen/X86/fast-isel-x86-64.ll >>>> llvm/trunk/test/CodeGen/X86/force-align-stack-alloca.ll >>>> llvm/trunk/test/CodeGen/X86/immediate_merging.ll >>>> llvm/trunk/test/CodeGen/X86/immediate_merging64.ll >>>> llvm/trunk/test/CodeGen/X86/lea-opt-memop-check-1.ll >>>> llvm/trunk/test/CodeGen/X86/load-slice.ll >>>> llvm/trunk/test/CodeGen/X86/lsr-normalization.ll >>>> llvm/trunk/test/CodeGen/X86/mcu-abi.ll >>>> llvm/trunk/test/CodeGen/X86/mem-intrin-base-reg.ll >>>> llvm/trunk/test/CodeGen/X86/memcpy-2.ll >>>> llvm/trunk/test/CodeGen/X86/memcpy-from-string.ll >>>> llvm/trunk/test/CodeGen/X86/memcpy.ll >>>> llvm/trunk/test/CodeGen/X86/memset-2.ll >>>> llvm/trunk/test/CodeGen/X86/memset-3.ll >>>> llvm/trunk/test/CodeGen/X86/memset-nonzero.ll >>>> llvm/trunk/test/CodeGen/X86/memset-sse-stack-realignment.ll >>>> llvm/trunk/test/CodeGen/X86/memset.ll >>>> llvm/trunk/test/CodeGen/X86/memset64-on-x86-32.ll >>>> llvm/trunk/test/CodeGen/X86/misaligned-memset.ll >>>> llvm/trunk/test/CodeGen/X86/misched-new.ll >>>> llvm/trunk/test/CodeGen/X86/negate-add-zero.ll >>>> llvm/trunk/test/CodeGen/X86/optimize-max-0.ll >>>> llvm/trunk/test/CodeGen/X86/pr11985.ll >>>> llvm/trunk/test/CodeGen/X86/pr14333.ll >>>> llvm/trunk/test/CodeGen/X86/pr34088.ll >>>> llvm/trunk/test/CodeGen/X86/ragreedy-hoist-spill.ll >>>> llvm/trunk/test/CodeGen/X86/regparm.ll >>>> llvm/trunk/test/CodeGen/X86/remat-fold-load.ll >>>> llvm/trunk/test/CodeGen/X86/slow-unaligned-mem.ll >>>> llvm/trunk/test/CodeGen/X86/small-byval-memcpy.ll >>>> llvm/trunk/test/CodeGen/X86/stack-align.ll >>>> llvm/trunk/test/CodeGen/X86/stack-protector.ll >>>> llvm/trunk/test/CodeGen/X86/tail-dup-merge-loop-headers.ll >>>> llvm/trunk/test/CodeGen/X86/tailcall-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/X86/tlv-1.ll >>>> llvm/trunk/test/CodeGen/X86/unaligned-load.ll >>>> llvm/trunk/test/CodeGen/X86/unused_stackslots.ll >>>> llvm/trunk/test/CodeGen/X86/unwindraise.ll >>>> llvm/trunk/test/CodeGen/X86/variable-sized-darwin-bzero.ll >>>> llvm/trunk/test/CodeGen/X86/vectorcall.ll >>>> llvm/trunk/test/CodeGen/X86/x86-64-static-relo-movl.ll >>>> llvm/trunk/test/CodeGen/X86/x86-repmov-copy-eflags.ll >>>> llvm/trunk/test/CodeGen/XCore/memcpy.ll >>>> llvm/trunk/test/DebugInfo/AArch64/frameindices.ll >>>> llvm/trunk/test/DebugInfo/COFF/types-array.ll >>>> llvm/trunk/test/DebugInfo/Generic/2010-10-01-crash.ll >>>> llvm/trunk/test/DebugInfo/X86/array.ll >>>> llvm/trunk/test/DebugInfo/X86/array2.ll >>>> llvm/trunk/test/DebugInfo/X86/debug-ranges-offset.ll >>>> llvm/trunk/test/DebugInfo/X86/pieces-2.ll >>>> llvm/trunk/test/DebugInfo/X86/pieces-3.ll >>>> llvm/trunk/test/DebugInfo/X86/safestack-byval.ll >>>> llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-1.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-2.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-4.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-5.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-dbg-declare.ll >>>> llvm/trunk/test/Instrumentation/AddressSanitizer/basic.ll >>>> llvm/trunk/test/Instrumentation/AddressSanitizer/stack-poiso >>>> ning-byval-args.ll >>>> llvm/trunk/test/Instrumentation/DataFlowSanitizer/memset.ll >>>> (145 more files...) >>>> >>>> >>>> >>>> _______________________________________________ >>>> llvm-commits mailing list >>>> llvm-commits at lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits >>>> >>> >>> >>> >>> -- >>> *Alexandre Isoard* >>> <memcopy.sed>_______________________________________________ >>> LLVM Developers mailing list >>> llvm-dev at lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>> >>> >>> >> >> >> -- >> *Alexandre Isoard* >> >> >> > > > -- > *Alexandre Isoard* > > >-- *Alexandre Isoard* -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180124/6e7c672e/attachment.html>
Philip Reames via llvm-dev
2018-Jan-29 19:38 UTC
[llvm-dev] [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
This seems like a reasonable proposal for any param alignment attribute. I don't see a reason to restrict this to the memory intrinsics. On 01/24/2018 07:40 PM, Daniel Neilson via llvm-dev wrote:> Good question. AFAIK, the IR-printer doesn’t understand the semantics > of parameter attributes. In this case, it only knows that there is an > attribute on the parameter that is integer valued (with value 1) and > that has the name “align”, so it prints it out. If we don’t want it > printing out ‘align 1’ then it’s up to us to not set the alignment > parameter attribute to a value if that value would be 1. > > If preferred, it would be easy enough to change the behaviour for the > memory intrinsics to only set the attribute to a value if an alignment > greater than 1 is supplied. It’d keep the text in the IR a little > cleaner/cleaner, and not change functionality… > > Thoughts/opinions, anyone? > > -Daniel > >> On Jan 24, 2018, at 9:24 PM, Alexandre Isoard >> <alexandre.isoard at gmail.com <mailto:alexandre.isoard at gmail.com>> wrote: >> >> Yes, all that is correct. >> >> My question is more a long term question: why do the .ll printer >> specify the alignment if it is equivalent to the default one? >> That is, it seems the sed script expect the printer to not specify it >> (this would match the load/store behavior), but the ll-printer does >> specify it, which either means the printer is not ideal on this case >> and I should fix it, or in this case the ABI alignment is not what I >> think it is, then I should fix the test-cases. >> >> I'm not sure which side is correct. >> >> On Wed, Jan 24, 2018 at 7:11 PM, Daniel Neilson<dneilson at azul.com >> <mailto:dneilson at azul.com>>wrote: >> >> Hi Alexandre, >> Before the change you would have been expecting one of the >> following, correct? >> a) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast >> ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 >> addrspace(1)* [[APTR]], i64 2048, i32 0, i1 false) >> b) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast >> ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 >> addrspace(1)* [[APTR]], i64 2048, i32 1, i1 false) >> >> Functionally, (a) & (b) are both saying that the src & dest >> pointers are 1-byte aligned; i.e. they’re both basically saying >> “I don’t really have any better information on alignment, so >> we’ll go with 1-byte aligned since it can’t be less aligned than >> that” >> >> After the patch, you’re seeing: >> i) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 >> bitcast ([512 x float] addrspace(3)* [[SPM0]] to i8 >> addrspace(3)*), i8 align 1 addrspace(1)* [[APTR]], i64 2048, i1 >> false) >> but your IR test, that you ran the sed script on, is saying to >> expect: >> ii) call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* >> bitcast ([512 x float] addrspace(3)* [[SPM0]] to i8 >> addrspace(3)*), i8 addrspace(1)* [[APTR]], i64 2048, i1 false) >> >> Is that correct? Just like (a) & (b), both (i) & (ii) are >> functionally equivalent. >> >> The script rule that would have changed that was: >> s~call void @llvm\.mem(cpy|move)\.p([^(]*)i64\(i8([^*]*)\* (.*), >> i8([^*]*)\* (.*), i64 (.*), i32 [01], i1 ([^)]*)\)~call void >> @llvm.mem\1.p\2i64(i8\3* \4, i8\5* \6, i64 \7, i1 \8)~g >> >> It was converting both (a) and (b) into (ii). If that’s not what >> you’re seeing/wanting, then you can just add the ‘align 1’s into >> your test’s CHECK pattern, or alter the sed script by >> changing “..., i32 [01], i1...” into “..., i32 0, i1…" >> >> -Daniel >> >>> On Jan 24, 2018, at 8:47 PM, Alexandre Isoard >>> <alexandre.isoard at gmail.com <mailto:alexandre.isoard at gmail.com>> >>> wrote: >>> >>> Thanks, that worked like a charm except for the following: >>> >>> llvm generate: >>> >>> call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* align 1 >>> bitcast ([512 x float] addrspace(3)* @a_scratchpad to i8 >>> addrspace(3)*), i8 addrspace(1)* align 1 %0, i64 2048, i1 false) >>> >>> And we expected: >>> >>> call void @llvm.memcpy.p3i8.p1i8.i64(i8 addrspace(3)* bitcast >>> ([512 x float] addrspace(3)* [[SPM0]] to i8 addrspace(3)*), i8 >>> addrspace(1)* [[APTR]], i64 2048, i1 false) >>> >>> Notice the presence of "align 1". I'm not sure which side is >>> correct, isn't it equivalent (that is, this is the natural ABI >>> alignment of that type)? >>> >>> Here is my datalayout: >>> >>> target datalayout >>> "e-m:e-i64:64-n8:16:32:64-S128-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" >>> >>> >>> 2018-01-23 20:14 GMT-08:00 Daniel Neilson<dneilson at azul.com >>> <mailto:dneilson at azul.com>>: >>> >>> Hi Alexandre, >>> The script uses extended-sed syntax, so you need to run sed >>> with the -E option. >>> >>> For example, when preparing the patch I created a file ( >>> script.sed ) containing all of the lines that I copied into >>> the commit message. Then, I ran this bash one-liner from the >>> test directory: >>> for f in $(find . -name '*.ll'); do sed -E -i ‘.sedbak' -f >>> script.sed $f; done >>> When I was happy with the results, then: find . -name >>> ‘*.sedbak’ --exec rm -f {} \; >>> >>> Please let me know if that doesn’t work for you. >>> >>> -Daniel >>> >>>> On Jan 23, 2018, at 8:33 PM, Alexandre Isoard via llvm-dev >>>> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> >>>> wrote: >>>> >>>> Hello, >>>> >>>> Is there a script to update those test cases? I see mention >>>> of a sed script in the commit message but when I try it >>>> (see attached) on sed I get the following error: >>>> >>>> sed: file script line 2: invalid reference \3 on `s' >>>> command's RHS >>>> >>>> Did I lose something in a copy-paste? Is it not really a >>>> sed script? How do I run it? >>>> >>>> >>>> On Fri, Jan 19, 2018 at 9:15 AM, Daniel Neilson via >>>> Phabricator via llvm-commits<llvm-commits at lists.llvm.org >>>> <mailto:llvm-commits at lists.llvm.org>>wrote: >>>> >>>> This revision was automatically updated to reflect the >>>> committed changes. >>>> Closed by commit rL322965: Remove alignment argument >>>> from memcpy/memmove/memset in favour of alignment… >>>> (authored by dneilson, committed by ). >>>> >>>> Repository: >>>> rL LLVM >>>> >>>> https://reviews.llvm.org/D41675 >>>> <https://reviews.llvm.org/D41675> >>>> >>>> Files: >>>> llvm/trunk/docs/LangRef.rst >>>> llvm/trunk/include/llvm/IR/IntrinsicInst.h >>>> llvm/trunk/include/llvm/IR/Intrinsics.td >>>> <http://rinsics.td/> >>>> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp >>>> llvm/trunk/lib/IR/AutoUpgrade.cpp >>>> llvm/trunk/lib/IR/IRBuilder.cpp >>>> llvm/trunk/lib/IR/Verifier.cpp >>>> llvm/trunk/lib/Target/AArch64/AArch64FastISel.cpp >>>> llvm/trunk/lib/Target/ARM/ARMFastISel.cpp >>>> llvm/trunk/lib/Target/Mips/MipsFastISel.cpp >>>> llvm/trunk/lib/Target/X86/X86FastISel.cpp >>>> llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp >>>> llvm/trunk/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp >>>> llvm/trunk/test/Analysis/AliasSet/memtransfer.ll >>>> llvm/trunk/test/Analysis/BasicAA/assume.ll >>>> llvm/trunk/test/Analysis/BasicAA/cs-cs.ll >>>> llvm/trunk/test/Analysis/BasicAA/gep-and-alias.ll >>>> llvm/trunk/test/Analysis/BasicAA/getmodrefinfo-cs-cs.ll >>>> llvm/trunk/test/Analysis/BasicAA/guards.ll >>>> llvm/trunk/test/Analysis/BasicAA/modref.ll >>>> llvm/trunk/test/Analysis/CallGraph/no-intrinsics.ll >>>> llvm/trunk/test/Analysis/ConstantFolding/gep-constanfolding-error.ll >>>> llvm/trunk/test/Analysis/DependenceAnalysis/Preliminary.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/memset-escape.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/no-escape.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/pr12351.ll >>>> llvm/trunk/test/Analysis/GlobalsModRef/volatile-instrs.ll >>>> llvm/trunk/test/Analysis/Lint/noalias-byval.ll >>>> llvm/trunk/test/Analysis/MemorySSA/basicaa-memcpy.ll >>>> llvm/trunk/test/Analysis/ScalarEvolution/avoid-smax-1.ll >>>> llvm/trunk/test/Analysis/ScalarEvolution/trip-count.ll >>>> llvm/trunk/test/Analysis/ScalarEvolution/trip-count3.ll >>>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll >>>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/memcpyopt.ll >>>> llvm/trunk/test/Bitcode/standardCIntrinsic.3.2.ll >>>> llvm/trunk/test/Bitcode/upgrade-memory-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll >>>> llvm/trunk/test/CodeGen/AArch64/PBQP-csr.ll >>>> llvm/trunk/test/CodeGen/AArch64/aarch64-DAGCombine-findBetterNeighborChains-crash.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-2012-05-07-MemcpyAlignBug.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-abi-varargs.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-abi_align.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-memcpy-inline.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-memset-inline.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-memset-to-bzero.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-misaligned-memcpy-inline.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A53.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-misched-basic-A57.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-stur.ll >>>> llvm/trunk/test/CodeGen/AArch64/arm64-virtual_base.ll >>>> llvm/trunk/test/CodeGen/AArch64/fast-isel-memcpy.ll >>>> llvm/trunk/test/CodeGen/AArch64/func-argpassing.ll >>>> llvm/trunk/test/CodeGen/AArch64/ldp-stp-scaled-unscaled-pairs.ll >>>> llvm/trunk/test/CodeGen/AArch64/ldst-paired-aliasing.ll >>>> llvm/trunk/test/CodeGen/AArch64/ldst-zero.ll >>>> llvm/trunk/test/CodeGen/AArch64/machine-combiner-madd.ll >>>> llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll >>>> llvm/trunk/test/CodeGen/AArch64/merge-store-dependency.ll >>>> llvm/trunk/test/CodeGen/AArch64/mergestores_noimplicitfloat.ll >>>> llvm/trunk/test/CodeGen/AArch64/misched-stp.ll >>>> llvm/trunk/test/CodeGen/AArch64/pr33172.ll >>>> llvm/trunk/test/CodeGen/AArch64/tailcall-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AArch64/tailcall-string-rvo.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/addrspacecast-constantexpr.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/lds-alignment.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/llvm.memcpy.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/lower-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/promote-alloca-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AMDGPU/stack-size-overflow.ll >>>> llvm/trunk/test/CodeGen/ARM/2009-03-07-SpillerBug.ll >>>> llvm/trunk/test/CodeGen/ARM/2011-03-10-DAGCombineCrash.ll >>>> llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/2011-10-26-memset-with-neon.ll >>>> llvm/trunk/test/CodeGen/ARM/2012-04-24-SplitEHCriticalEdge.ll >>>> llvm/trunk/test/CodeGen/ARM/Windows/memset.ll >>>> llvm/trunk/test/CodeGen/ARM/Windows/no-aeabi.ll >>>> llvm/trunk/test/CodeGen/ARM/arm-eabi.ll >>>> llvm/trunk/test/CodeGen/ARM/constantpool-promote-ldrh.ll >>>> llvm/trunk/test/CodeGen/ARM/constantpool-promote.ll >>>> llvm/trunk/test/CodeGen/ARM/crash-O0.ll >>>> llvm/trunk/test/CodeGen/ARM/debug-info-blocks.ll >>>> llvm/trunk/test/CodeGen/ARM/dyn-stackalloc.ll >>>> llvm/trunk/test/CodeGen/ARM/fast-isel-intrinsic.ll >>>> llvm/trunk/test/CodeGen/ARM/interval-update-remat.ll >>>> llvm/trunk/test/CodeGen/ARM/ldm-stm-base-materialization.ll >>>> llvm/trunk/test/CodeGen/ARM/machine-cse-cmp.ll >>>> llvm/trunk/test/CodeGen/ARM/memcpy-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/memcpy-ldm-stm.ll >>>> llvm/trunk/test/CodeGen/ARM/memcpy-no-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/memfunc.ll >>>> llvm/trunk/test/CodeGen/ARM/memset-inline.ll >>>> llvm/trunk/test/CodeGen/ARM/stack-protector-bmovpcb_call.ll >>>> llvm/trunk/test/CodeGen/ARM/struct-byval-frame-index.ll >>>> llvm/trunk/test/CodeGen/ARM/tailcall-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/AVR/std-ldd-immediate-overflow.ll >>>> llvm/trunk/test/CodeGen/BPF/byval.ll >>>> llvm/trunk/test/CodeGen/BPF/ex1.ll >>>> llvm/trunk/test/CodeGen/BPF/fi_ri.ll >>>> llvm/trunk/test/CodeGen/BPF/reloc.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_1.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_2.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_3.ll >>>> llvm/trunk/test/CodeGen/BPF/rodata_4.ll >>>> llvm/trunk/test/CodeGen/BPF/sanity.ll >>>> llvm/trunk/test/CodeGen/BPF/undef.ll >>>> llvm/trunk/test/CodeGen/BPF/warn-call.ll >>>> llvm/trunk/test/CodeGen/Generic/ForceStackAlign.ll >>>> llvm/trunk/test/CodeGen/Generic/invalid-memcpy.ll >>>> llvm/trunk/test/CodeGen/Hexagon/adjust-latency-stackST.ll >>>> llvm/trunk/test/CodeGen/Hexagon/branchfolder-keep-impdef.ll >>>> llvm/trunk/test/CodeGen/Hexagon/early-if-conversion-bug1.ll >>>> llvm/trunk/test/CodeGen/Hexagon/mem-fi-add.ll >>>> llvm/trunk/test/CodeGen/Hexagon/memcpy-likely-aligned.ll >>>> llvm/trunk/test/CodeGen/Hexagon/rdf-filter-defs.ll >>>> llvm/trunk/test/CodeGen/Hexagon/store-imm-stack-object.ll >>>> llvm/trunk/test/CodeGen/Hexagon/tail-call-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/MSP430/memset.ll >>>> llvm/trunk/test/CodeGen/Mips/2012-12-12-ExpandMemcpy.ll >>>> llvm/trunk/test/CodeGen/Mips/Fast-ISel/memtest1.ll >>>> llvm/trunk/test/CodeGen/Mips/biggot.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-small-structures-bigger-than-32bits.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-structs-byte.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/arguments-varargs-small-structs-combinations.ll >>>> llvm/trunk/test/CodeGen/Mips/cconv/return-struct.ll >>>> llvm/trunk/test/CodeGen/Mips/largeimmprinting.ll >>>> llvm/trunk/test/CodeGen/Mips/long-calls.ll >>>> llvm/trunk/test/CodeGen/Mips/memcpy.ll >>>> llvm/trunk/test/CodeGen/Mips/pr33978.ll >>>> llvm/trunk/test/CodeGen/Mips/tailcall/tailcall.ll >>>> llvm/trunk/test/CodeGen/NVPTX/lower-aggr-copies.ll >>>> llvm/trunk/test/CodeGen/PowerPC/2011-12-05-NoSpillDupCR.ll >>>> llvm/trunk/test/CodeGen/PowerPC/2011-12-06-SpillAndRestoreCR.ll >>>> llvm/trunk/test/CodeGen/PowerPC/MMO-flags-assertion.ll >>>> llvm/trunk/test/CodeGen/PowerPC/aantidep-inline-asm-use.ll >>>> llvm/trunk/test/CodeGen/PowerPC/ctrloop-reg.ll >>>> llvm/trunk/test/CodeGen/PowerPC/emptystruct.ll >>>> llvm/trunk/test/CodeGen/PowerPC/fsl-e500mc.ll >>>> llvm/trunk/test/CodeGen/PowerPC/fsl-e5500.ll >>>> llvm/trunk/test/CodeGen/PowerPC/glob-comp-aa-crash.ll >>>> llvm/trunk/test/CodeGen/PowerPC/isel-rc-nox0.ll >>>> llvm/trunk/test/CodeGen/PowerPC/licm-remat.ll >>>> llvm/trunk/test/CodeGen/PowerPC/lxv-aligned-stack-slots.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memcpy-vec.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memcpy_dereferenceable.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memset-nc-le.ll >>>> llvm/trunk/test/CodeGen/PowerPC/memset-nc.ll >>>> llvm/trunk/test/CodeGen/PowerPC/merge-st-chain-op.ll >>>> llvm/trunk/test/CodeGen/PowerPC/ppc-empty-fs.ll >>>> llvm/trunk/test/CodeGen/PowerPC/pr27350.ll >>>> llvm/trunk/test/CodeGen/PowerPC/resolvefi-basereg.ll >>>> llvm/trunk/test/CodeGen/PowerPC/resolvefi-disp.ll >>>> llvm/trunk/test/CodeGen/PowerPC/structsinmem.ll >>>> llvm/trunk/test/CodeGen/PowerPC/structsinregs.ll >>>> llvm/trunk/test/CodeGen/PowerPC/stwu8.ll >>>> llvm/trunk/test/CodeGen/PowerPC/tailcall-string-rvo.ll >>>> llvm/trunk/test/CodeGen/PowerPC/toc-load-sched-bug.ll >>>> llvm/trunk/test/CodeGen/RISCV/frame.ll >>>> llvm/trunk/test/CodeGen/SystemZ/dag-combine-02.ll >>>> llvm/trunk/test/CodeGen/SystemZ/loop-01.ll >>>> llvm/trunk/test/CodeGen/SystemZ/loop-03.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memcpy-01.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-01.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-02.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-03.ll >>>> llvm/trunk/test/CodeGen/SystemZ/memset-04.ll >>>> llvm/trunk/test/CodeGen/SystemZ/tail-call-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/Thumb/2011-05-11-DAGLegalizer.ll >>>> llvm/trunk/test/CodeGen/Thumb/dyn-stackalloc.ll >>>> llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization-thumb2.ll >>>> llvm/trunk/test/CodeGen/Thumb/ldm-stm-base-materialization.ll >>>> llvm/trunk/test/CodeGen/Thumb/stack-coloring-without-frame-ptr.ll >>>> llvm/trunk/test/CodeGen/Thumb2/2009-08-04-SubregLoweringBug.ll >>>> llvm/trunk/test/CodeGen/Thumb2/2012-01-13-CBNZBug.ll >>>> llvm/trunk/test/CodeGen/WebAssembly/global.ll >>>> llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/X86/2007-10-15-CoalescerCrash.ll >>>> llvm/trunk/test/CodeGen/X86/2009-01-25-NoSSE.ll >>>> llvm/trunk/test/CodeGen/X86/2009-11-16-UnfoldMemOpBug.ll >>>> llvm/trunk/test/CodeGen/X86/2010-04-08-CoalescerBug.ll >>>> llvm/trunk/test/CodeGen/X86/2010-04-21-CoalescerBug.ll >>>> llvm/trunk/test/CodeGen/X86/2010-06-25-CoalescerSubRegDefDead.ll >>>> llvm/trunk/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll >>>> llvm/trunk/test/CodeGen/X86/2012-01-10-UndefExceptionEdge.ll >>>> llvm/trunk/test/CodeGen/X86/alignment-2.ll >>>> llvm/trunk/test/CodeGen/X86/bug26810.ll >>>> llvm/trunk/test/CodeGen/X86/darwin-bzero.ll >>>> llvm/trunk/test/CodeGen/X86/fast-isel-call.ll >>>> llvm/trunk/test/CodeGen/X86/fast-isel-deadcode.ll >>>> llvm/trunk/test/CodeGen/X86/fast-isel-x86-64.ll >>>> llvm/trunk/test/CodeGen/X86/force-align-stack-alloca.ll >>>> llvm/trunk/test/CodeGen/X86/immediate_merging.ll >>>> llvm/trunk/test/CodeGen/X86/immediate_merging64.ll >>>> llvm/trunk/test/CodeGen/X86/lea-opt-memop-check-1.ll >>>> llvm/trunk/test/CodeGen/X86/load-slice.ll >>>> llvm/trunk/test/CodeGen/X86/lsr-normalization.ll >>>> llvm/trunk/test/CodeGen/X86/mcu-abi.ll >>>> llvm/trunk/test/CodeGen/X86/mem-intrin-base-reg.ll >>>> llvm/trunk/test/CodeGen/X86/memcpy-2.ll >>>> llvm/trunk/test/CodeGen/X86/memcpy-from-string.ll >>>> llvm/trunk/test/CodeGen/X86/memcpy.ll >>>> llvm/trunk/test/CodeGen/X86/memset-2.ll >>>> llvm/trunk/test/CodeGen/X86/memset-3.ll >>>> llvm/trunk/test/CodeGen/X86/memset-nonzero.ll >>>> llvm/trunk/test/CodeGen/X86/memset-sse-stack-realignment.ll >>>> llvm/trunk/test/CodeGen/X86/memset.ll >>>> llvm/trunk/test/CodeGen/X86/memset64-on-x86-32.ll >>>> llvm/trunk/test/CodeGen/X86/misaligned-memset.ll >>>> llvm/trunk/test/CodeGen/X86/misched-new.ll >>>> llvm/trunk/test/CodeGen/X86/negate-add-zero.ll >>>> llvm/trunk/test/CodeGen/X86/optimize-max-0.ll >>>> llvm/trunk/test/CodeGen/X86/pr11985.ll >>>> llvm/trunk/test/CodeGen/X86/pr14333.ll >>>> llvm/trunk/test/CodeGen/X86/pr34088.ll >>>> llvm/trunk/test/CodeGen/X86/ragreedy-hoist-spill.ll >>>> llvm/trunk/test/CodeGen/X86/regparm.ll >>>> llvm/trunk/test/CodeGen/X86/remat-fold-load.ll >>>> llvm/trunk/test/CodeGen/X86/slow-unaligned-mem.ll >>>> llvm/trunk/test/CodeGen/X86/small-byval-memcpy.ll >>>> llvm/trunk/test/CodeGen/X86/stack-align.ll >>>> llvm/trunk/test/CodeGen/X86/stack-protector.ll >>>> llvm/trunk/test/CodeGen/X86/tail-dup-merge-loop-headers.ll >>>> llvm/trunk/test/CodeGen/X86/tailcall-mem-intrinsics.ll >>>> llvm/trunk/test/CodeGen/X86/tlv-1.ll >>>> llvm/trunk/test/CodeGen/X86/unaligned-load.ll >>>> llvm/trunk/test/CodeGen/X86/unused_stackslots.ll >>>> llvm/trunk/test/CodeGen/X86/unwindraise.ll >>>> llvm/trunk/test/CodeGen/X86/variable-sized-darwin-bzero.ll >>>> llvm/trunk/test/CodeGen/X86/vectorcall.ll >>>> llvm/trunk/test/CodeGen/X86/x86-64-static-relo-movl.ll >>>> llvm/trunk/test/CodeGen/X86/x86-repmov-copy-eflags.ll >>>> llvm/trunk/test/CodeGen/XCore/memcpy.ll >>>> llvm/trunk/test/DebugInfo/AArch64/frameindices.ll >>>> llvm/trunk/test/DebugInfo/COFF/types-array.ll >>>> llvm/trunk/test/DebugInfo/Generic/2010-10-01-crash.ll >>>> llvm/trunk/test/DebugInfo/X86/array.ll >>>> llvm/trunk/test/DebugInfo/X86/array2.ll >>>> llvm/trunk/test/DebugInfo/X86/debug-ranges-offset.ll >>>> llvm/trunk/test/DebugInfo/X86/pieces-2.ll >>>> llvm/trunk/test/DebugInfo/X86/pieces-3.ll >>>> llvm/trunk/test/DebugInfo/X86/safestack-byval.ll >>>> llvm/trunk/test/DebugInfo/X86/split-dwarf-cross-unit-reference.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-1.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-2.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-4.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-5.ll >>>> llvm/trunk/test/DebugInfo/X86/sroasplit-dbg-declare.ll >>>> llvm/trunk/test/Instrumentation/AddressSanitizer/basic.ll >>>> llvm/trunk/test/Instrumentation/AddressSanitizer/stack-poisoning-byval-args.ll >>>> llvm/trunk/test/Instrumentation/DataFlowSanitizer/memset.ll >>>> (145 more files...) >>>> >>>> >>>> >>>> _______________________________________________ >>>> llvm-commits mailing list >>>> llvm-commits at lists.llvm.org >>>> <mailto:llvm-commits at lists.llvm.org> >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits >>>> <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits> >>>> >>>> >>>> >>>> >>>> -- >>>> *Alexandre Isoard* >>>> <memcopy.sed>_______________________________________________ >>>> LLVM Developers mailing list >>>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>>> <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev> >>> >>> >>> >>> >>> -- >>> *Alexandre Isoard* >> >> >> >> >> -- >> *Alexandre Isoard* > > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180129/d173ff68/attachment-0001.html>
Reasonably Related Threads
- [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
- [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
- [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
- [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)
- [PATCH] D41675: Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1)