diff --git a/llvm/test/CodeGen/SPIRV/fembed-bitcode-marker-shader.ll b/llvm/test/CodeGen/SPIRV/fembed-bitcode-marker-shader.ll new file mode 100644 index 0000000000000..811a4be7726af --- /dev/null +++ b/llvm/test/CodeGen/SPIRV/fembed-bitcode-marker-shader.ll @@ -0,0 +1,22 @@ +; RUN: llc -verify-machineinstrs -mtriple=spirv-vulkan-unknown %s -o - | FileCheck %s +; RUN: %if spirv-tools %{ llc -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val %} + +@llvm.embedded.module = private constant [0 x i8] zeroinitializer, section ".llvmbc", align 1 +@llvm.cmdline = private constant [5 x i8] c"-cc1\00", section ".llvmcmd", align 1 +@llvm.compiler.used = appending global [2 x ptr] [ptr @llvm.embedded.module, ptr @llvm.cmdline], section "llvm.metadata" + +; CHECK-DAG: OpName [[FOO:%[0-9]+]] "foo" +; CHECK-DAG: OpName [[MODULE:%[0-9]+]] "llvm.embedded.module" +; CHECK-DAG: [[INT8:%[0-9]+]] = OpTypeInt 8 0 +; CHECK-DAG: [[RUNTIME_ARRAY_INT8x1:%[0-9]+]] = OpTypeRuntimeArray [[INT8]] +; CHECK-DAG: [[POINTER:%[0-9]+]] = OpTypePointer Function [[RUNTIME_ARRAY_INT8x1]] +; CHECK-DAG: [[EMBEDDED_MODULE_INIT:%[0-9]+]] = OpConstantNull [[RUNTIME_ARRAY_INT8x1]] +; CHECK: [[FOO]] = OpFunction {{.*}} None {{.*}} +; CHECK-DAG: {{%[0-9]+}} = OpVariable [[POINTER]] Function [[EMBEDDED_MODULE_INIT]] + +define void @foo() #1 { +entry: + ret void +} + +attributes #1 = { "hlsl.numthreads"="4,8,16" "hlsl.shader"="compute" } diff --git a/llvm/test/CodeGen/SPIRV/fembed-bitcode-marker.ll b/llvm/test/CodeGen/SPIRV/fembed-bitcode-marker.ll new file mode 100644 index 0000000000000..b727e5dd84545 --- /dev/null +++ b/llvm/test/CodeGen/SPIRV/fembed-bitcode-marker.ll @@ -0,0 +1,12 @@ +; XFAIL: * +; RUN: llc -verify-machineinstrs -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s +; RUN: %if spirv-tools %{ llc -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val %} + +@llvm.embedded.module = private constant [0 x i8] zeroinitializer, section ".llvmbc", align 1 +@llvm.cmdline = private constant [5 x i8] c"-cc1\00", section ".llvmcmd", align 1 +@llvm.compiler.used = appending global [2 x ptr] [ptr @llvm.embedded.module, ptr @llvm.cmdline], section "llvm.metadata" + +define spir_kernel void @foo() { +entry: + ret void +} diff --git a/llvm/test/CodeGen/SPIRV/fembed-bitcode.ll b/llvm/test/CodeGen/SPIRV/fembed-bitcode.ll new file mode 100644 index 0000000000000..fa6ef86288d7c --- /dev/null +++ b/llvm/test/CodeGen/SPIRV/fembed-bitcode.ll @@ -0,0 +1,26 @@ +; RUN: llc -verify-machineinstrs -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s +; RUN: %if spirv-tools %{ llc -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val %} + +@llvm.embedded.module = private constant [4 x i8] c"BC\C0\DE", section ".llvmbc", align 1 +@llvm.cmdline = private constant [5 x i8] c"-cc1\00", section ".llvmcmd", align 1 +@llvm.compiler.used = appending global [2 x ptr] [ptr @llvm.embedded.module, ptr @llvm.cmdline], section "llvm.metadata" + +; CHECK-DAG: OpName [[FOO:%[0-9]+]] "foo" +; CHECK-DAG: OpName [[MODULE:%[0-9]+]] "llvm.embedded.module" +; CHECK-DAG: [[INT8:%[0-9]+]] = OpTypeInt 8 0 +; CHECK-DAG: [[INT32:%[0-9]+]] = OpTypeInt 32 0 +; CHECK-DAG: [[CONST_4_32:%[0-9]+]] = OpConstant [[INT32]] 4 +; CHECK-DAG: [[ARRAY_INT8x4:%[0-9]+]] = OpTypeArray [[INT8]] [[CONST_4_32]] +; CHECK-DAG: [[POINTER:%[0-9]+]] = OpTypePointer Function [[ARRAY_INT8x4]] +; CHECK-DAG: [[CONST_B_8:%[0-9]+]] = OpConstant [[INT8]] 66 +; CHECK-DAG: [[CONST_C_8:%[0-9]+]] = OpConstant [[INT8]] 67 +; CHECK-DAG: [[CONST_0xC0_8:%[0-9]+]] = OpConstant [[INT8]] 192 +; CHECK-DAG: [[CONST_0xDE_8:%[0-9]+]] = OpConstant [[INT8]] 222 +; CHECK-DAG: [[EMBEDDED_MODULE_INIT:%[0-9]+]] = OpConstantComposite [[ARRAY_INT8x4]] [[CONST_B_8]] [[CONST_C_8]] [[CONST_0xC0_8]] [[CONST_0xDE_8]] +; CHECK: [[FOO]] = OpFunction {{.*}} None {{.*}} +; CHECK-DAG: {{%[0-9]+}} = OpVariable [[POINTER]] Function [[EMBEDDED_MODULE_INIT]] + +define spir_kernel void @foo() { +entry: + ret void +}