brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 4f28713 Raw
38 lines · plain
1; RUN: opt -S -dxil-forward-handle-accesses  %s | FileCheck %s  --check-prefixes=CHECK,FHCHECK2; RUN: opt -S -mtriple=dxil--shadermodel6.3-compute -passes='function(dxil-forward-handle-accesses),dse' %s | FileCheck %s --check-prefix=CHECK3 4; Note: test to confirm fix for issues: 140819 & 1517645 6%"class.hlsl::RWStructuredBuffer" = type { target("dx.RawBuffer", i32, 1, 0) }7@global = internal unnamed_addr global %"class.hlsl::RWStructuredBuffer" poison, align 48@name = private unnamed_addr constant [5 x i8] c"dest\00", align 19 10 11; NOTE: intent of this test is to confirm load target("dx.RawBuffer", i32, 1, 0)12;       is replaced with call @llvm.dx.resource.getpointer13define void @CSMain() local_unnamed_addr {14; CHECK-LABEL: define void @CSMain() local_unnamed_addr {15; CHECK-NEXT:  [[ENTRY:.*:]]16; FHCHECK-NEXT:    [[AGG_TMP_I1_SROA_0:%.*]] = alloca target("dx.RawBuffer", i32, 1, 0), align 817; CHECK-NEXT:    [[TMP0:%.*]] = tail call target("dx.RawBuffer", i32, 1, 0) @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i32_1_0t(i32 0, i32 3, i32 1, i32 0, ptr nonnull @name)18; CHECK-NEXT:    store target("dx.RawBuffer", i32, 1, 0) [[TMP0]], ptr @global, align 419; FHCHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr @global, align 420; FHCHECK-NEXT:    store i32 [[TMP2]], ptr [[AGG_TMP_I1_SROA_0]], align 821; CHECK-NEXT:    [[TMP3:%.*]] = tail call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_i32_1_0t(target("dx.RawBuffer", i32, 1, 0) [[TMP0]], i32 0)22; CHECK-NEXT:    store i32 0, ptr [[TMP3]], align 423; CHECK-NEXT:    ret void24;25entry:26  %alloca = alloca target("dx.RawBuffer", i32, 1, 0), align 827  %handle  = tail call target("dx.RawBuffer", i32, 1, 0) @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i32_1_0t(i32 0, i32 3, i32 1, i32 0, ptr nonnull @name)28  store target("dx.RawBuffer", i32, 1, 0) %handle , ptr @global, align 429  %val  = load i32, ptr @global, align 430  call void @llvm.lifetime.start.p0(ptr nonnull %alloca)31  store i32 %val , ptr  %alloca, align 832  %indirect = load target("dx.RawBuffer", i32, 1, 0), ptr  %alloca, align 833  %buff = tail call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_i32_1_0t(target("dx.RawBuffer", i32, 1, 0) %indirect, i32 0)34  store i32 0, ptr %buff, align 435  call void @llvm.lifetime.end.p0(ptr nonnull %alloca)36  ret void37}38