CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
228 lines
10 KiB
HLSL
228 lines
10 KiB
HLSL
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals all --include-generated-funcs --version 5
|
|
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
|
|
// RUN: spirv-unknown-vulkan-compute %s -fnative-int16-type -emit-llvm -disable-llvm-passes \
|
|
// RUN: -o - | FileCheck %s
|
|
|
|
[[vk::constant_id(1)]]
|
|
const bool bool_const = true;
|
|
|
|
[[vk::constant_id(1)]]
|
|
const short short_const = 4;
|
|
|
|
[[vk::constant_id(3)]]
|
|
const int int_const = 5;
|
|
|
|
[[vk::constant_id(4)]]
|
|
const long long long_const = 8;
|
|
|
|
[[vk::constant_id(5)]]
|
|
const unsigned short ushort_const = 10;
|
|
|
|
[[vk::constant_id(6)]]
|
|
const unsigned int uint_const = 12;
|
|
|
|
[[vk::constant_id(6)]]
|
|
const uint uint_const_2 = 12;
|
|
|
|
[[vk::constant_id(7)]]
|
|
const unsigned long long ulong_const = 25;
|
|
|
|
[[vk::constant_id(8)]]
|
|
const half half_const = 40.4;
|
|
|
|
[[vk::constant_id(8)]]
|
|
const float float_const = 50.5;
|
|
|
|
[[vk::constant_id(9)]]
|
|
const double double_const = 100.2;
|
|
|
|
enum E {
|
|
e0 = 10,
|
|
e1 = 20,
|
|
e2 = 30
|
|
};
|
|
|
|
[[vk::constant_id(10)]]
|
|
const E enum_const = e2;
|
|
|
|
[numthreads(1,1,1)]
|
|
void main() {
|
|
bool b = bool_const;
|
|
short s = short_const;
|
|
int i = int_const;
|
|
long long l = long_const;
|
|
unsigned short us = ushort_const;
|
|
unsigned int ui = uint_const;
|
|
uint ui2 = uint_const_2;
|
|
unsigned long long ul = ulong_const;
|
|
half h = half_const;
|
|
float f = float_const;
|
|
double d = double_const;
|
|
E e = enum_const;
|
|
}
|
|
//.
|
|
// CHECK: @_ZL10bool_const = internal addrspace(10) global i32 0, align 4
|
|
// CHECK: @_ZL11short_const = internal addrspace(10) global i16 0, align 2
|
|
// CHECK: @_ZL9int_const = internal addrspace(10) global i32 0, align 4
|
|
// CHECK: @_ZL10long_const = internal addrspace(10) global i64 0, align 8
|
|
// CHECK: @_ZL12ushort_const = internal addrspace(10) global i16 0, align 2
|
|
// CHECK: @_ZL10uint_const = internal addrspace(10) global i32 0, align 4
|
|
// CHECK: @_ZL12uint_const_2 = internal addrspace(10) global i32 0, align 4
|
|
// CHECK: @_ZL11ulong_const = internal addrspace(10) global i64 0, align 8
|
|
// CHECK: @_ZL10half_const = internal addrspace(10) global float 0.000000e+00, align 4
|
|
// CHECK: @_ZL11float_const = internal addrspace(10) global float 0.000000e+00, align 4
|
|
// CHECK: @_ZL12double_const = internal addrspace(10) global double 0.000000e+00, align 8
|
|
// CHECK: @_ZL10enum_const = internal addrspace(10) global i32 0, align 4
|
|
//.
|
|
// CHECK-LABEL: define internal spir_func void @_Z4mainv(
|
|
// CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[B:%.*]] = alloca i32, align 4
|
|
// CHECK-NEXT: [[S:%.*]] = alloca i16, align 2
|
|
// CHECK-NEXT: [[I:%.*]] = alloca i32, align 4
|
|
// CHECK-NEXT: [[L:%.*]] = alloca i64, align 8
|
|
// CHECK-NEXT: [[US:%.*]] = alloca i16, align 2
|
|
// CHECK-NEXT: [[UI:%.*]] = alloca i32, align 4
|
|
// CHECK-NEXT: [[UI2:%.*]] = alloca i32, align 4
|
|
// CHECK-NEXT: [[UL:%.*]] = alloca i64, align 8
|
|
// CHECK-NEXT: [[H:%.*]] = alloca float, align 4
|
|
// CHECK-NEXT: [[F:%.*]] = alloca float, align 4
|
|
// CHECK-NEXT: [[D:%.*]] = alloca double, align 8
|
|
// CHECK-NEXT: [[E:%.*]] = alloca i32, align 4
|
|
// CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr addrspace(10) @_ZL10bool_const, align 4
|
|
// CHECK-NEXT: [[LOADEDV:%.*]] = icmp ne i32 [[TMP1]], 0
|
|
// CHECK-NEXT: [[STOREDV:%.*]] = zext i1 [[LOADEDV]] to i32
|
|
// CHECK-NEXT: store i32 [[STOREDV]], ptr [[B]], align 4
|
|
// CHECK-NEXT: [[TMP2:%.*]] = load i16, ptr addrspace(10) @_ZL11short_const, align 2
|
|
// CHECK-NEXT: store i16 [[TMP2]], ptr [[S]], align 2
|
|
// CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr addrspace(10) @_ZL9int_const, align 4
|
|
// CHECK-NEXT: store i32 [[TMP3]], ptr [[I]], align 4
|
|
// CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr addrspace(10) @_ZL10long_const, align 8
|
|
// CHECK-NEXT: store i64 [[TMP4]], ptr [[L]], align 8
|
|
// CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr addrspace(10) @_ZL12ushort_const, align 2
|
|
// CHECK-NEXT: store i16 [[TMP5]], ptr [[US]], align 2
|
|
// CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr addrspace(10) @_ZL10uint_const, align 4
|
|
// CHECK-NEXT: store i32 [[TMP6]], ptr [[UI]], align 4
|
|
// CHECK-NEXT: [[TMP7:%.*]] = load i32, ptr addrspace(10) @_ZL12uint_const_2, align 4
|
|
// CHECK-NEXT: store i32 [[TMP7]], ptr [[UI2]], align 4
|
|
// CHECK-NEXT: [[TMP8:%.*]] = load i64, ptr addrspace(10) @_ZL11ulong_const, align 8
|
|
// CHECK-NEXT: store i64 [[TMP8]], ptr [[UL]], align 8
|
|
// CHECK-NEXT: [[TMP9:%.*]] = load float, ptr addrspace(10) @_ZL10half_const, align 4
|
|
// CHECK-NEXT: store float [[TMP9]], ptr [[H]], align 4
|
|
// CHECK-NEXT: [[TMP10:%.*]] = load float, ptr addrspace(10) @_ZL11float_const, align 4
|
|
// CHECK-NEXT: store float [[TMP10]], ptr [[F]], align 4
|
|
// CHECK-NEXT: [[TMP11:%.*]] = load double, ptr addrspace(10) @_ZL12double_const, align 8
|
|
// CHECK-NEXT: store double [[TMP11]], ptr [[D]], align 8
|
|
// CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr addrspace(10) @_ZL10enum_const, align 4
|
|
// CHECK-NEXT: store i32 [[TMP12]], ptr [[E]], align 4
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init(
|
|
// CHECK-SAME: ) #[[ATTR3:[0-9]+]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i1 @_Z20__spirv_SpecConstantib(i32 1, i1 true)
|
|
// CHECK-NEXT: [[STOREDV:%.*]] = zext i1 [[TMP1]] to i32
|
|
// CHECK-NEXT: store i32 [[STOREDV]], ptr addrspace(10) @_ZL10bool_const, align 4
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.1(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i16 @_Z20__spirv_SpecConstantis(i32 1, i16 4)
|
|
// CHECK-NEXT: store i16 [[TMP1]], ptr addrspace(10) @_ZL11short_const, align 2
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.2(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i32 @_Z20__spirv_SpecConstantii(i32 3, i32 5)
|
|
// CHECK-NEXT: store i32 [[TMP1]], ptr addrspace(10) @_ZL9int_const, align 4
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.3(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i64 @_Z20__spirv_SpecConstantix(i32 4, i64 8)
|
|
// CHECK-NEXT: store i64 [[TMP1]], ptr addrspace(10) @_ZL10long_const, align 8
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.4(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i16 @_Z20__spirv_SpecConstantit(i32 5, i16 10)
|
|
// CHECK-NEXT: store i16 [[TMP1]], ptr addrspace(10) @_ZL12ushort_const, align 2
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.5(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i32 @_Z20__spirv_SpecConstantij(i32 6, i32 12)
|
|
// CHECK-NEXT: store i32 [[TMP1]], ptr addrspace(10) @_ZL10uint_const, align 4
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.6(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i32 @_Z20__spirv_SpecConstantij(i32 6, i32 12)
|
|
// CHECK-NEXT: store i32 [[TMP1]], ptr addrspace(10) @_ZL12uint_const_2, align 4
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.7(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i64 @_Z20__spirv_SpecConstantiy(i32 7, i64 25)
|
|
// CHECK-NEXT: store i64 [[TMP1]], ptr addrspace(10) @_ZL11ulong_const, align 8
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.8(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn float @_Z20__spirv_SpecConstantiDh(i32 8, float 4.040000e+01)
|
|
// CHECK-NEXT: store float [[TMP1]], ptr addrspace(10) @_ZL10half_const, align 4
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.9(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn float @_Z20__spirv_SpecConstantif(i32 8, float 5.050000e+01)
|
|
// CHECK-NEXT: store float [[TMP1]], ptr addrspace(10) @_ZL11float_const, align 4
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.10(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call reassoc nnan ninf nsz arcp afn double @_Z20__spirv_SpecConstantid(i32 9, double f0x40590CCCC0000000)
|
|
// CHECK-NEXT: store double [[TMP1]], ptr addrspace(10) @_ZL12double_const, align 8
|
|
// CHECK-NEXT: ret void
|
|
//
|
|
//
|
|
// CHECK-LABEL: define internal spir_func void @__cxx_global_var_init.11(
|
|
// CHECK-SAME: ) #[[ATTR3]] {
|
|
// CHECK-NEXT: [[ENTRY:.*:]]
|
|
// CHECK-NEXT: [[TMP0:%.*]] = call token @llvm.experimental.convergence.entry()
|
|
// CHECK-NEXT: [[TMP1:%.*]] = call i32 @_Z20__spirv_SpecConstantii(i32 10, i32 30)
|
|
// CHECK-NEXT: store i32 [[TMP1]], ptr addrspace(10) @_ZL10enum_const, align 4
|
|
// CHECK-NEXT: ret void
|