brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · dd40aa8 Raw
64 lines · plain
1; RUN: opt -S -dxil-op-lower %s | FileCheck %s2 3target triple = "dxil-pc-shadermodel6.6-compute"4 5declare void @f32_user(float)6declare void @f64_user(double)7declare void @f16_user(half)8 9; CHECK-LABEL: define void @loadf3210define void @loadf32() {11  %buffer = call target("dx.CBuffer", <{ float }>)12      @llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null)13 14  ; CHECK: [[DATA:%.*]] = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %{{.*}}, i32 0)15  %load = call {float, float, float, float} @llvm.dx.resource.load.cbufferrow.4(16      target("dx.CBuffer", <{ float }>) %buffer,17      i32 0)18  %data = extractvalue {float, float, float, float} %load, 019 20  ; CHECK: [[VAL:%.*]] = extractvalue %dx.types.CBufRet.f32 [[DATA]], 021  ; CHECK: call void @f32_user(float [[VAL]])22  call void @f32_user(float %data)23 24  ret void25}26 27; CHECK-LABEL: define void @loadf6428define void @loadf64() {29  %buffer = call30      target("dx.CBuffer", <{ <4 x double> }>)31      @llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null)32 33  ; CHECK: [[DATA:%.*]] = call %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32 59, %dx.types.Handle %{{.*}}, i32 1)34  %load = call {double, double} @llvm.dx.resource.load.cbufferrow.2(35      target("dx.CBuffer", <{ <4 x double> }>) %buffer,36      i32 1)37  %data = extractvalue {double, double} %load, 138 39  ; CHECK: [[VAL:%.*]] = extractvalue %dx.types.CBufRet.f64 [[DATA]], 140  ; CHECK: call void @f64_user(double [[VAL]])41  call void @f64_user(double %data)42 43  ret void44}45 46; CHECK-LABEL: define void @loadf1647define void @loadf16() {48  %buffer = call49      target("dx.CBuffer", <{ half }>)50      @llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null)51 52  ; CHECK: [[DATA:%.*]] = call %dx.types.CBufRet.f16.8 @dx.op.cbufferLoadLegacy.f16(i32 59, %dx.types.Handle %{{.*}}, i32 0)53  %load = call {half, half, half, half, half, half, half, half} @llvm.dx.resource.load.cbufferrow.8(54      target("dx.CBuffer", <{ half }>) %buffer,55      i32 0)56  %data = extractvalue {half, half, half, half, half, half, half, half} %load, 057 58  ; CHECK: [[VAL:%.*]] = extractvalue %dx.types.CBufRet.f16.8 [[DATA]], 059  ; CHECK: call void @f16_user(half [[VAL]])60  call void @f16_user(half %data)61 62  ret void63}64