blob: 307b1b832eaf473e95db3b796ebf7618678f0d63 [file] [edit]
; RUN: opt -S -dxil-resource-access -dxil-intrinsic-expansion \
; RUN: -mtriple=dxil-pc-shadermodel6.2-compute %s | FileCheck %s
define void @storev8f64_byte(i32 %index, <8 x double> %data) {
%buffer = call target("dx.RawBuffer", i8, 1, 0)
@llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null)
; CHECK-NOT: @llvm.dx.resource.getpointer
%ptr = call ptr @llvm.dx.resource.getpointer(
target("dx.RawBuffer", i8, 1, 0) %buffer, i32 %index)
; CHECK: call void [[STORE:@llvm\.dx\.resource\.store\.rawbuffer[^(]*]]([[BUFFER_TY:target\("dx\.RawBuffer", i8, 1, 0\)]] %buffer, i32 %index, [[STORE_TAIL:i32 poison, <4 x i32>]]
; CHECK: %[[INDEX16:.*]] = add i32 %index, 16
; CHECK: call void [[STORE]]([[BUFFER_TY]] %buffer, i32 %[[INDEX16]], [[STORE_TAIL]]
; CHECK: %[[INDEX32:.*]] = add i32 %index, 32
; CHECK: call void [[STORE]]([[BUFFER_TY]] %buffer, i32 %[[INDEX32]], [[STORE_TAIL]]
; CHECK: %[[INDEX48:.*]] = add i32 %[[INDEX32]], 16
; CHECK: call void [[STORE]]([[BUFFER_TY]] %buffer, i32 %[[INDEX48]], [[STORE_TAIL]]
store <8 x double> %data, ptr %ptr
ret void
}