On Oct 18, 2012, at 6:11 AM, Patrik Hägglund H <patrik.h.haggl...@ericsson.com> wrote:
> We have a back-end with 16-bit bytes, and have changed the memset > intrinsics to be able to work on arbitrary word sizes, just as memcpy. Hi Patrik, This is interesting. Please start a thread on llvmdev about this functionality, and outline what other intrinsics will have to change to add non-8-bit byte support. This isn't the sort of feature that we just add without understanding the full impact. Also, to actually roll this out, you'll need to add lib/VMCore/AutoUpgrade.cpp support for this change, because we need to be able to read old .bc and .ll files that use the previous form of the intrinsic. -Chris > > This patch updates the type of the second parameter of memset in > Intrinsics.td, from llvm_i8_ty, to llvm_anyint_ty: > > def int_memset : Intrinsic<[], > - [llvm_anyptr_ty, llvm_i8_ty, llvm_anyint_ty, > + [llvm_anyptr_ty, llvm_anyint_ty, llvm_anyint_ty, > llvm_i32_ty, llvm_i1_ty], > > IRBuilder.cpp and LangRef.html is updated accordingly. > > To use the intrinsic, the declaration, > > declare void @llvm.memset.p0i8.i32(i8* <dest>, i8 <val>, > i32 <len>, i32 <align>, i1 <isvolatile>) > > now becomes > > declare void @llvm.memset.p0i8.i8.i32(i8* <dest>, i8 <val>, > i32 <len>, i32 <align>, i1 > <isvolatile>) > > The bulk of this patch consists of such changes (mainly in tests). > > Some tests in clang has to be updated, as shown by the second patch file. > > /Patrik Hägglund > <0002-clang-Change-memset-in-Intrinsics.td-to-take-anyint.patch><0001-llvm-Change-memset-in-Intrinsics.td-to-take-anyint.patch>_______________________________________________ > cfe-commits mailing list > cfe-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits