--- /dev/null
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+
+; RUN: llc < %s -mtriple=x86_64-pc-linux | FileCheck %s --check-prefix=X64
+; RUN: llc < %s -mtriple=i386-pc-linux | FileCheck %s --check-prefix=X86
+
+%struct.s = type { [100 x i32] }
+
+define void @f(%struct.s* nocapture %s) #0 {
+; X64-LABEL: f:
+; X64: # %bb.0: # %entry
+; X64-NEXT: xorps %xmm0, %xmm0
+; X64-NEXT: movups %xmm0, 48(%rdi)
+; X64-NEXT: movups %xmm0, 32(%rdi)
+; X64-NEXT: movups %xmm0, 16(%rdi)
+; X64-NEXT: movups %xmm0, (%rdi)
+; X64-NEXT: retq
+;
+; X86-LABEL: f:
+; X86: # %bb.0: # %entry
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT: xorps %xmm0, %xmm0
+; X86-NEXT: movups %xmm0, 48(%eax)
+; X86-NEXT: movups %xmm0, 32(%eax)
+; X86-NEXT: movups %xmm0, 16(%eax)
+; X86-NEXT: movups %xmm0, (%eax)
+; X86-NEXT: retl
+entry:
+ %s5 = bitcast %struct.s* %s to i8*
+ call void @llvm.memset.p0i8.i32(i8* noundef nonnull align 4 dereferenceable(64) %s5, i8 0, i32 64, i1 false)
+ ret void
+}
+
+declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1 immarg)
+
+attributes #0 = { "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }