blob: ae4ed8a794f64cc3e96b28daa270a4def263ae2b [file]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=sroa -S %s | FileCheck %s
target datalayout = "e-ni:10"
declare void @llvm.memset.p0.i64(ptr, i8, i64, i1)
define <2 x ptr addrspace(10)> @vector_memset(
; CHECK-LABEL: define <2 x ptr addrspace(10)> @vector_memset(
; CHECK-SAME: <2 x ptr addrspace(10)> [[V:%.*]], i8 [[BYTE:%.*]]) {
; CHECK-NEXT: [[A_SROA_0:%.*]] = alloca <2 x ptr addrspace(10)>, align 16
; CHECK-NEXT: store <2 x ptr addrspace(10)> [[V]], ptr [[A_SROA_0]], align 16
; CHECK-NEXT: [[A_SROA_0_8_P_SROA_IDX1:%.*]] = getelementptr inbounds i8, ptr [[A_SROA_0]], i64 8
; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[A_SROA_0_8_P_SROA_IDX1]], i8 [[BYTE]], i64 8, i1 false)
; CHECK-NEXT: [[A_SROA_0_0_A_SROA_0_0_R:%.*]] = load <2 x ptr addrspace(10)>, ptr [[A_SROA_0]], align 16
; CHECK-NEXT: ret <2 x ptr addrspace(10)> [[A_SROA_0_0_A_SROA_0_0_R]]
;
<2 x ptr addrspace(10)> %v, i8 %byte) {
%a = alloca [2 x ptr addrspace(10)], align 8
store <2 x ptr addrspace(10)> %v, ptr %a, align 8
%p = getelementptr inbounds i8, ptr %a, i64 8
call void @llvm.memset.p0.i64(ptr %p, i8 %byte, i64 8, i1 false)
%r = load <2 x ptr addrspace(10)>, ptr %a, align 8
ret <2 x ptr addrspace(10)> %r
}