brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · e1aa097 Raw
34 lines · plain
1// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple dxil-pc-shadermodel6.3-library %s  \2// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s --check-prefixes=CHECK-DX,CHECK3// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -triple spirv-pc-vulkan-library %s  \4// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s --check-prefixes=CHECK-VK,CHECK5 6struct S {7  float a : A4;8};9 10// CHECK-VK: @A4 = external hidden thread_local addrspace(8) global float, !spirv.Decorations ![[#ATTR0:]]11 12// Make sure sret parameter is generated.13// CHECK-DX: define internal void @_Z7vs_mainv(ptr dead_on_unwind noalias writable sret(%struct.S) align 1 %agg.result)14// CHECK-VK: define internal spir_func void @_Z7vs_mainv(ptr dead_on_unwind noalias writable sret(%struct.S) align 1 %agg.result)15 16[shader("vertex")]17S vs_main() {18  S s;19  s.a = 0;20  return s;21};22 23// CHECK: %[[#alloca:]] = alloca %struct.S, align 824// CHECK-DX:              call void @_Z7vs_mainv(ptr %[[#alloca]])25// CHECK-VK:              call spir_func void @_Z7vs_mainv(ptr %[[#alloca]])26// CHECK: %[[#a:]] = load %struct.S, ptr %[[#alloca]], align 427// CHECK: %[[#b:]] = extractvalue %struct.S %[[#a]], 028// CHECK-DX:         call void @llvm.dx.store.output.f32(i32 4, i32 0, i32 0, i8 0, i32 poison, float %[[#b]])29// CHECK-VK:         store float %3, ptr addrspace(8) @A4, align 430// CHECK:            ret void31 32// CHECK-VK: ![[#ATTR0]] = !{![[#ATTR1:]]}33// CHECK-VK: ![[#ATTR1]] = !{i32 30, i32 0}34