summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorI-Jui (Ray) Sung <ijsung@google.com>2016-11-16 16:27:23 -0800
committerI-Jui (Ray) Sung <ijsung@google.com>2016-11-16 16:59:46 -0800
commit0e839d7e9d7e5a096949e39a4c6e00670c8dee64 (patch)
treeeeb77f3f1009dbd47aea77fafd8e682bbc959dc6 /test
parent90178d28d62d61af255809d52b063663c37bb9fb (diff)
downloadspirv-llvm-0e839d7e9d7e5a096949e39a4c6e00670c8dee64.tar.gz
Converted source files of inconsistent formats to Unix
Did so by "find . -name \* -exec dos2unix {} \;" Test: build Change-Id: I74514445ba590e75720e00625050562309193eef
Diffstat (limited to 'test')
-rw-r--r--test/SPIRV/CreatePipeFromPipeStorage.ll338
-rw-r--r--test/SPIRV/ExecutionMode.ll300
-rw-r--r--test/SPIRV/ExecutionMode_SPIR_to_SPIRV.ll108
-rw-r--r--test/SPIRV/PipeStorage.ll116
-rw-r--r--test/SPIRV/SPIRVVersionAutodetect_1_0.ll62
-rw-r--r--test/SPIRV/SPIRVVersionAutodetect_1_1.ll66
-rw-r--r--test/SPIRV/builtin_vars-decorate.ll192
-rw-r--r--test/SPIRV/linkage-types.ll334
-rw-r--r--test/SPIRV/simple.ll316
-rw-r--r--test/SPIRV/transcoding/DecorationMaxByteOffset.ll106
-rw-r--r--test/SPIRV/transcoding/check_ro_qualifier.ll120
-rw-r--r--test/SPIRV/transcoding/check_wo_qualifier.ll122
12 files changed, 1090 insertions, 1090 deletions
diff --git a/test/SPIRV/CreatePipeFromPipeStorage.ll b/test/SPIRV/CreatePipeFromPipeStorage.ll
index 178fc8c7..a18b1ff7 100644
--- a/test/SPIRV/CreatePipeFromPipeStorage.ll
+++ b/test/SPIRV/CreatePipeFromPipeStorage.ll
@@ -1,169 +1,169 @@
-; RUN: llvm-as %s -o %t.bc
-; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
-; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
-; RUN: llvm-spirv %t.bc -o %t.spv
-; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
-; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
-
-
-; CHECK-LLVM: %"[[CL_PIPE_STORAGE_NAME:[^"]+]]" = type { %spirv.PipeStorage addrspace(1)* }
-; CHECK-LLVM: %"[[CL_READ_PIPE_NAME:[^"]+read>]]" = type { %spirv.Pipe._0 addrspace(1)* }
-; CHECK-LLVM: %spirv.Pipe._0 = type opaque
-; CHECK-LLVM: %"[[CL_WRITE_PIPE_NAME:[^"]+write>]]" = type { %spirv.Pipe._1 addrspace(1)* }
-; CHECK-LLVM: %spirv.Pipe._1 = type opaque
-
-
-; CHECK-SPIRV: Capability Pipes
-; CHECK-SPIRV: Capability PipeStorage
-
-; CHECK-SPIRV: Name [[PIPE_STORAGE_ID:[0-9]+]] "mygpipe"
-; CHECK-SPIRV: Name [[READ_PIPE_WRAPPER_ID:[0-9]+]] "myrpipe"
-; CHECK-SPIRV: Name [[WRITE_PIPE_WRAPPER_ID:[0-9]+]] "mywpipe"
-; CHECK-SPIRV: Name [[WRITE_PIPE_WRAPPER_CTOR:[0-9]+]] "_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE"
-; CHECK-SPIRV: Name [[READ_PIPE_WRAPPER_CTOR:[0-9]+]] "_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE"
-
-; CHECK-SPIRV: TypeInt [[INT_T:[0-9]+]] 32 0
-; CHECK-SPIRV: Constant [[INT_T]] [[CONSTANT_ZERO_ID:[0-9]+]] 0
-
-; CHECK-SPIRV: TypePipe [[READ_PIPE:[0-9]+]] 0
-; CHECK-SPIRV: TypeStruct [[READ_PIPE_WRAPPER:[0-9]+]] [[READ_PIPE]]
-; CHECK-SPIRV: TypePointer [[READ_PIPE_WRAPPER_PTR:[0-9]+]] 7 [[READ_PIPE_WRAPPER]]
-; CHECK-SPIRV: TypePipe [[WRITE_PIPE:[0-9]+]] 1
-; CHECK-SPIRV: TypeStruct [[WRITE_PIPE_WRAPPER:[0-9]+]] [[WRITE_PIPE]]
-
-; CHECK-SPIRV: TypePointer [[WRITE_PIPE_WRAPPER_PTR:[0-9]+]] 7 [[WRITE_PIPE_WRAPPER]]
-
-
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-%spirv.ConstantPipeStorage = type { i32, i32, i32 }
-%"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" = type { %spirv.PipeStorage addrspace(1)* }
-%spirv.PipeStorage = type opaque
-%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" = type { %spirv.Pipe._0 addrspace(1)* }
-%spirv.Pipe._0 = type opaque
-%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" = type { %spirv.Pipe._1 addrspace(1)* }
-%spirv.Pipe._1 = type opaque
-
-@_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE = linkonce_odr addrspace(1) global %spirv.ConstantPipeStorage { i32 16, i32 16, i32 1 }, align 4
-@mygpipe = addrspace(1) global %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" { %spirv.PipeStorage addrspace(1)* bitcast (%spirv.ConstantPipeStorage addrspace(1)* @_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE to %spirv.PipeStorage addrspace(1)*) }, align 4
-
-
-; Function Attrs: nounwind
-define spir_kernel void @worker() {
-entry:
- ; CHECK-LLVM: %myrpipe = alloca %"[[CL_READ_PIPE_NAME]]", align 4
- ; CHECK-LLVM: %mywpipe = alloca %"[[CL_WRITE_PIPE_NAME]]", align 4
-
- ; CHECK-SPIRV: Variable [[READ_PIPE_WRAPPER_PTR]] [[READ_PIPE_WRAPPER_ID]] 7
- ; CHECK-SPIRV: Variable [[WRITE_PIPE_WRAPPER_PTR]] [[WRITE_PIPE_WRAPPER_ID]] 7
-
- %myrpipe = alloca %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>", align 4
- %mywpipe = alloca %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>", align 4
-
-
- ; CHECK-LLVM: %[[ID0:[0-9]+]] = addrspacecast %"[[CL_PIPE_STORAGE_NAME]]" addrspace(1)* @mygpipe to %"[[CL_PIPE_STORAGE_NAME]]" addrspace(4)*
- ; CHECK-LLVM: %[[ID1:[0-9]+]] = getelementptr %"[[CL_PIPE_STORAGE_NAME]]", %"[[CL_PIPE_STORAGE_NAME]]" addrspace(4)* %[[ID0]], i32 0, i32 0
-
- ; CHECK-SPIRV: PtrCastToGeneric {{[0-9]+}} [[SPIRV0:[0-9]+]] [[PIPE_STORAGE_ID]]
- ; CHECK-SPIRV: PtrAccessChain {{[0-9]+}} [[SPIRV1:[0-9]+]] [[SPIRV0]] [[CONSTANT_ZERO_ID]] [[CONSTANT_ZERO_ID]]
-
- %0 = addrspacecast %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" addrspace(1)* @mygpipe to %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" addrspace(4)*
- %1 = getelementptr %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>", %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" addrspace(4)* %0, i32 0, i32 0
-
-
- ; CHECK-LLVM: %[[PIPE_STORAGE_1:[0-9]+]] = load %spirv.PipeStorage addrspace(1)* addrspace(4)* %[[ID1]], align 4
- ; CHECK-LLVM: %[[WRITE_PIPE:[0-9]+]] = call spir_func %spirv.Pipe._1 addrspace(1)* @_Z39__spirv_CreatePipeFromPipeStorage_writePU3AS119__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %[[PIPE_STORAGE_1]])
- ; CHECK-LLVM: %[[WRITE_PIPE_WRAPPER:[0-9]+]] = addrspacecast %"[[CL_WRITE_PIPE_NAME]]"* %mywpipe to %"[[CL_WRITE_PIPE_NAME]]" addrspace(4)*
- ; CHECK-LLVM: call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"[[CL_WRITE_PIPE_NAME]]" addrspace(4)* nocapture %[[WRITE_PIPE_WRAPPER]], %spirv.Pipe._1 addrspace(1)* %[[WRITE_PIPE]])
-
- ; CHECK-SPIRV: Load {{[0-9]+}} [[PIPE_STORAGE_ID0:[0-9]+]] [[SPIRV1]] 2 4
- ; CHECK-SPIRV: CreatePipeFromPipeStorage [[WRITE_PIPE]] [[WRITE_PIPE_ID:[0-9]+]] [[PIPE_STORAGE_ID0]]
- ; CHECK-SPIRV: PtrCastToGeneric {{[0-9]+}} [[GENERIC_WRITE_PIPE_WRAPPER_ID:[0-9]+]] [[WRITE_PIPE_WRAPPER_ID]]
- ; CHECK-SPIRV: FunctionCall {{[0-9]+}} {{[0-9]+}} [[WRITE_PIPE_WRAPPER_CTOR]] [[GENERIC_WRITE_PIPE_WRAPPER_ID]] [[WRITE_PIPE_ID]]
-
- %2 = load %spirv.PipeStorage addrspace(1)*, %spirv.PipeStorage addrspace(1)* addrspace(4)* %1, align 4
- %3 = tail call spir_func %spirv.Pipe._1 addrspace(1)* @_Z39__spirv_CreatePipeFromPipeStorage_writePU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %2)
- %4 = addrspacecast %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>"* %mywpipe to %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)*
- call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* %4, %spirv.Pipe._1 addrspace(1)* %3)
-
-
- ; CHECK-LLVM: %[[PIPE_STORAGE_2:[0-9]+]] = load %spirv.PipeStorage addrspace(1)* addrspace(4)* %[[ID1]], align 4
- ; CHECK-LLVM: %[[READ_PIPE:[0-9]+]] = call spir_func %spirv.Pipe._0 addrspace(1)* @_Z38__spirv_CreatePipeFromPipeStorage_readPU3AS119__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %[[PIPE_STORAGE_2]])
- ; CHECK-LLVM: %[[READ_PIPE_WRAPPER:[0-9]+]] = addrspacecast %"[[CL_READ_PIPE_NAME]]"* %myrpipe to %"[[CL_READ_PIPE_NAME]]" addrspace(4)*
- ; CHECK-LLVM: call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"[[CL_READ_PIPE_NAME]]" addrspace(4)* nocapture %[[READ_PIPE_WRAPPER]], %spirv.Pipe._0 addrspace(1)* %[[READ_PIPE]])
-
- ; CHECK-SPIRV: Load {{[0-9]+}} [[PIPE_STORAGE_ID1:[0-9]+]] [[SPIRV1]] 2 4
- ; CHECK-SPIRV: CreatePipeFromPipeStorage [[READ_PIPE]] [[READ_PIPE_ID:[0-9]+]] [[PIPE_STORAGE_ID1]]
- ; CHECK-SPIRV: PtrCastToGeneric {{[0-9]+}} [[GENERIC_READ_PIPE_WRAPPER_ID:[0-9]+]] [[READ_PIPE_WRAPPER_ID]]
- ; CHECK-SPIRV: FunctionCall {{[0-9]+}} {{[0-9]+}} [[READ_PIPE_WRAPPER_CTOR]] [[GENERIC_READ_PIPE_WRAPPER_ID]] [[READ_PIPE_ID]]
-
- %5 = load %spirv.PipeStorage addrspace(1)*, %spirv.PipeStorage addrspace(1)* addrspace(4)* %1, align 4
- %6 = tail call spir_func %spirv.Pipe._0 addrspace(1)* @_Z38__spirv_CreatePipeFromPipeStorage_readPU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %5)
- %7 = addrspacecast %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>"* %myrpipe to %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)*
- call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* %7, %spirv.Pipe._0 addrspace(1)* %6)
-
-
- ret void
-}
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* nocapture %this, %spirv.Pipe._0 addrspace(1)* %handle) unnamed_addr align 2 {
-entry:
- tail call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* %this, %spirv.Pipe._0 addrspace(1)* %handle)
- ret void
-}
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* nocapture %this, %spirv.Pipe._0 addrspace(1)* %handle) unnamed_addr align 2 {
-entry:
- %_handle = getelementptr inbounds %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>", %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* %this, i32 0, i32 0
- store %spirv.Pipe._0 addrspace(1)* %handle, %spirv.Pipe._0 addrspace(1)* addrspace(4)* %_handle, align 4, !tbaa !11
- ret void
-}
-
-; Function Attrs: nounwind
-declare spir_func %spirv.Pipe._0 addrspace(1)* @_Z38__spirv_CreatePipeFromPipeStorage_readPU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)*)
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* nocapture %this, %spirv.Pipe._1 addrspace(1)* %handle) unnamed_addr align 2 {
-entry:
- tail call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* %this, %spirv.Pipe._1 addrspace(1)* %handle)
- ret void
-}
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* nocapture %this, %spirv.Pipe._1 addrspace(1)* %handle) unnamed_addr align 2 {
-entry:
- %_handle = getelementptr inbounds %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>", %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* %this, i32 0, i32 0
- store %spirv.Pipe._1 addrspace(1)* %handle, %spirv.Pipe._1 addrspace(1)* addrspace(4)* %_handle, align 4, !tbaa !13
- ret void
-}
-
-; Function Attrs: nounwind
-declare spir_func %spirv.Pipe._1 addrspace(1)* @_Z39__spirv_CreatePipeFromPipeStorage_writePU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)*)
-
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!0}
-!opencl.ocl.version = !{!1}
-!opencl.used.extensions = !{!2}
-!opencl.used.optional.core.features = !{!2}
-!opencl.compiler.options = !{!2}
-!llvm.ident = !{!3}
-!spirv.Source = !{!4}
-!spirv.String = !{}
-
-!0 = !{i32 1, i32 2}
-!1 = !{i32 2, i32 2}
-!2 = !{}
-!3 = !{!"clang version 3.6.1 "}
-!4 = !{i32 4, i32 202000}
-!6 = !{!7, !8, i64 0}
-!7 = !{!"_ZTSN2cl12pipe_storageIDv4_iLj1EEE", !8, i64 0}
-!8 = !{!"any pointer", !9, i64 0}
-!9 = !{!"omnipotent char", !10, i64 0}
-!10 = !{!"Simple C/C++ TBAA"}
-!11 = !{!12, !8, i64 0}
-!12 = !{!"_ZTSN2cl4pipeIDv4_iLNS_11pipe_accessE0EEE", !8, i64 0}
-!13 = !{!14, !8, i64 0}
-!14 = !{!"_ZTSN2cl4pipeIDv4_iLNS_11pipe_accessE1EEE", !8, i64 0}
+; RUN: llvm-as %s -o %t.bc
+; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
+; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
+; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+
+
+; CHECK-LLVM: %"[[CL_PIPE_STORAGE_NAME:[^"]+]]" = type { %spirv.PipeStorage addrspace(1)* }
+; CHECK-LLVM: %"[[CL_READ_PIPE_NAME:[^"]+read>]]" = type { %spirv.Pipe._0 addrspace(1)* }
+; CHECK-LLVM: %spirv.Pipe._0 = type opaque
+; CHECK-LLVM: %"[[CL_WRITE_PIPE_NAME:[^"]+write>]]" = type { %spirv.Pipe._1 addrspace(1)* }
+; CHECK-LLVM: %spirv.Pipe._1 = type opaque
+
+
+; CHECK-SPIRV: Capability Pipes
+; CHECK-SPIRV: Capability PipeStorage
+
+; CHECK-SPIRV: Name [[PIPE_STORAGE_ID:[0-9]+]] "mygpipe"
+; CHECK-SPIRV: Name [[READ_PIPE_WRAPPER_ID:[0-9]+]] "myrpipe"
+; CHECK-SPIRV: Name [[WRITE_PIPE_WRAPPER_ID:[0-9]+]] "mywpipe"
+; CHECK-SPIRV: Name [[WRITE_PIPE_WRAPPER_CTOR:[0-9]+]] "_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE"
+; CHECK-SPIRV: Name [[READ_PIPE_WRAPPER_CTOR:[0-9]+]] "_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE"
+
+; CHECK-SPIRV: TypeInt [[INT_T:[0-9]+]] 32 0
+; CHECK-SPIRV: Constant [[INT_T]] [[CONSTANT_ZERO_ID:[0-9]+]] 0
+
+; CHECK-SPIRV: TypePipe [[READ_PIPE:[0-9]+]] 0
+; CHECK-SPIRV: TypeStruct [[READ_PIPE_WRAPPER:[0-9]+]] [[READ_PIPE]]
+; CHECK-SPIRV: TypePointer [[READ_PIPE_WRAPPER_PTR:[0-9]+]] 7 [[READ_PIPE_WRAPPER]]
+; CHECK-SPIRV: TypePipe [[WRITE_PIPE:[0-9]+]] 1
+; CHECK-SPIRV: TypeStruct [[WRITE_PIPE_WRAPPER:[0-9]+]] [[WRITE_PIPE]]
+
+; CHECK-SPIRV: TypePointer [[WRITE_PIPE_WRAPPER_PTR:[0-9]+]] 7 [[WRITE_PIPE_WRAPPER]]
+
+
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+%spirv.ConstantPipeStorage = type { i32, i32, i32 }
+%"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" = type { %spirv.PipeStorage addrspace(1)* }
+%spirv.PipeStorage = type opaque
+%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" = type { %spirv.Pipe._0 addrspace(1)* }
+%spirv.Pipe._0 = type opaque
+%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" = type { %spirv.Pipe._1 addrspace(1)* }
+%spirv.Pipe._1 = type opaque
+
+@_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE = linkonce_odr addrspace(1) global %spirv.ConstantPipeStorage { i32 16, i32 16, i32 1 }, align 4
+@mygpipe = addrspace(1) global %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" { %spirv.PipeStorage addrspace(1)* bitcast (%spirv.ConstantPipeStorage addrspace(1)* @_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE to %spirv.PipeStorage addrspace(1)*) }, align 4
+
+
+; Function Attrs: nounwind
+define spir_kernel void @worker() {
+entry:
+ ; CHECK-LLVM: %myrpipe = alloca %"[[CL_READ_PIPE_NAME]]", align 4
+ ; CHECK-LLVM: %mywpipe = alloca %"[[CL_WRITE_PIPE_NAME]]", align 4
+
+ ; CHECK-SPIRV: Variable [[READ_PIPE_WRAPPER_PTR]] [[READ_PIPE_WRAPPER_ID]] 7
+ ; CHECK-SPIRV: Variable [[WRITE_PIPE_WRAPPER_PTR]] [[WRITE_PIPE_WRAPPER_ID]] 7
+
+ %myrpipe = alloca %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>", align 4
+ %mywpipe = alloca %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>", align 4
+
+
+ ; CHECK-LLVM: %[[ID0:[0-9]+]] = addrspacecast %"[[CL_PIPE_STORAGE_NAME]]" addrspace(1)* @mygpipe to %"[[CL_PIPE_STORAGE_NAME]]" addrspace(4)*
+ ; CHECK-LLVM: %[[ID1:[0-9]+]] = getelementptr %"[[CL_PIPE_STORAGE_NAME]]", %"[[CL_PIPE_STORAGE_NAME]]" addrspace(4)* %[[ID0]], i32 0, i32 0
+
+ ; CHECK-SPIRV: PtrCastToGeneric {{[0-9]+}} [[SPIRV0:[0-9]+]] [[PIPE_STORAGE_ID]]
+ ; CHECK-SPIRV: PtrAccessChain {{[0-9]+}} [[SPIRV1:[0-9]+]] [[SPIRV0]] [[CONSTANT_ZERO_ID]] [[CONSTANT_ZERO_ID]]
+
+ %0 = addrspacecast %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" addrspace(1)* @mygpipe to %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" addrspace(4)*
+ %1 = getelementptr %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>", %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" addrspace(4)* %0, i32 0, i32 0
+
+
+ ; CHECK-LLVM: %[[PIPE_STORAGE_1:[0-9]+]] = load %spirv.PipeStorage addrspace(1)* addrspace(4)* %[[ID1]], align 4
+ ; CHECK-LLVM: %[[WRITE_PIPE:[0-9]+]] = call spir_func %spirv.Pipe._1 addrspace(1)* @_Z39__spirv_CreatePipeFromPipeStorage_writePU3AS119__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %[[PIPE_STORAGE_1]])
+ ; CHECK-LLVM: %[[WRITE_PIPE_WRAPPER:[0-9]+]] = addrspacecast %"[[CL_WRITE_PIPE_NAME]]"* %mywpipe to %"[[CL_WRITE_PIPE_NAME]]" addrspace(4)*
+ ; CHECK-LLVM: call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"[[CL_WRITE_PIPE_NAME]]" addrspace(4)* nocapture %[[WRITE_PIPE_WRAPPER]], %spirv.Pipe._1 addrspace(1)* %[[WRITE_PIPE]])
+
+ ; CHECK-SPIRV: Load {{[0-9]+}} [[PIPE_STORAGE_ID0:[0-9]+]] [[SPIRV1]] 2 4
+ ; CHECK-SPIRV: CreatePipeFromPipeStorage [[WRITE_PIPE]] [[WRITE_PIPE_ID:[0-9]+]] [[PIPE_STORAGE_ID0]]
+ ; CHECK-SPIRV: PtrCastToGeneric {{[0-9]+}} [[GENERIC_WRITE_PIPE_WRAPPER_ID:[0-9]+]] [[WRITE_PIPE_WRAPPER_ID]]
+ ; CHECK-SPIRV: FunctionCall {{[0-9]+}} {{[0-9]+}} [[WRITE_PIPE_WRAPPER_CTOR]] [[GENERIC_WRITE_PIPE_WRAPPER_ID]] [[WRITE_PIPE_ID]]
+
+ %2 = load %spirv.PipeStorage addrspace(1)*, %spirv.PipeStorage addrspace(1)* addrspace(4)* %1, align 4
+ %3 = tail call spir_func %spirv.Pipe._1 addrspace(1)* @_Z39__spirv_CreatePipeFromPipeStorage_writePU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %2)
+ %4 = addrspacecast %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>"* %mywpipe to %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)*
+ call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* %4, %spirv.Pipe._1 addrspace(1)* %3)
+
+
+ ; CHECK-LLVM: %[[PIPE_STORAGE_2:[0-9]+]] = load %spirv.PipeStorage addrspace(1)* addrspace(4)* %[[ID1]], align 4
+ ; CHECK-LLVM: %[[READ_PIPE:[0-9]+]] = call spir_func %spirv.Pipe._0 addrspace(1)* @_Z38__spirv_CreatePipeFromPipeStorage_readPU3AS119__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %[[PIPE_STORAGE_2]])
+ ; CHECK-LLVM: %[[READ_PIPE_WRAPPER:[0-9]+]] = addrspacecast %"[[CL_READ_PIPE_NAME]]"* %myrpipe to %"[[CL_READ_PIPE_NAME]]" addrspace(4)*
+ ; CHECK-LLVM: call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"[[CL_READ_PIPE_NAME]]" addrspace(4)* nocapture %[[READ_PIPE_WRAPPER]], %spirv.Pipe._0 addrspace(1)* %[[READ_PIPE]])
+
+ ; CHECK-SPIRV: Load {{[0-9]+}} [[PIPE_STORAGE_ID1:[0-9]+]] [[SPIRV1]] 2 4
+ ; CHECK-SPIRV: CreatePipeFromPipeStorage [[READ_PIPE]] [[READ_PIPE_ID:[0-9]+]] [[PIPE_STORAGE_ID1]]
+ ; CHECK-SPIRV: PtrCastToGeneric {{[0-9]+}} [[GENERIC_READ_PIPE_WRAPPER_ID:[0-9]+]] [[READ_PIPE_WRAPPER_ID]]
+ ; CHECK-SPIRV: FunctionCall {{[0-9]+}} {{[0-9]+}} [[READ_PIPE_WRAPPER_CTOR]] [[GENERIC_READ_PIPE_WRAPPER_ID]] [[READ_PIPE_ID]]
+
+ %5 = load %spirv.PipeStorage addrspace(1)*, %spirv.PipeStorage addrspace(1)* addrspace(4)* %1, align 4
+ %6 = tail call spir_func %spirv.Pipe._0 addrspace(1)* @_Z38__spirv_CreatePipeFromPipeStorage_readPU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)* %5)
+ %7 = addrspacecast %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>"* %myrpipe to %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)*
+ call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* %7, %spirv.Pipe._0 addrspace(1)* %6)
+
+
+ ret void
+}
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* nocapture %this, %spirv.Pipe._0 addrspace(1)* %handle) unnamed_addr align 2 {
+entry:
+ tail call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* %this, %spirv.Pipe._0 addrspace(1)* %handle)
+ ret void
+}
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE0EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE0EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* nocapture %this, %spirv.Pipe._0 addrspace(1)* %handle) unnamed_addr align 2 {
+entry:
+ %_handle = getelementptr inbounds %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>", %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::read>" addrspace(4)* %this, i32 0, i32 0
+ store %spirv.Pipe._0 addrspace(1)* %handle, %spirv.Pipe._0 addrspace(1)* addrspace(4)* %_handle, align 4, !tbaa !11
+ ret void
+}
+
+; Function Attrs: nounwind
+declare spir_func %spirv.Pipe._0 addrspace(1)* @_Z38__spirv_CreatePipeFromPipeStorage_readPU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)*)
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC1EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* nocapture %this, %spirv.Pipe._1 addrspace(1)* %handle) unnamed_addr align 2 {
+entry:
+ tail call spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* %this, %spirv.Pipe._1 addrspace(1)* %handle)
+ ret void
+}
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS42cl4pipeIDv4_iLNS_11pipe_accessE1EEC2EPU3AS1NS_7__spirv10OpTypePipeILNS3_15AccessQualifierE1EEE(%"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* nocapture %this, %spirv.Pipe._1 addrspace(1)* %handle) unnamed_addr align 2 {
+entry:
+ %_handle = getelementptr inbounds %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>", %"class.cl::pipe<int __attribute__((ext_vector_type(4))), cl::pipe_access::write>" addrspace(4)* %this, i32 0, i32 0
+ store %spirv.Pipe._1 addrspace(1)* %handle, %spirv.Pipe._1 addrspace(1)* addrspace(4)* %_handle, align 4, !tbaa !13
+ ret void
+}
+
+; Function Attrs: nounwind
+declare spir_func %spirv.Pipe._1 addrspace(1)* @_Z39__spirv_CreatePipeFromPipeStorage_writePU3AS1K19__spirv_PipeStorage(%spirv.PipeStorage addrspace(1)*)
+
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!0}
+!opencl.ocl.version = !{!1}
+!opencl.used.extensions = !{!2}
+!opencl.used.optional.core.features = !{!2}
+!opencl.compiler.options = !{!2}
+!llvm.ident = !{!3}
+!spirv.Source = !{!4}
+!spirv.String = !{}
+
+!0 = !{i32 1, i32 2}
+!1 = !{i32 2, i32 2}
+!2 = !{}
+!3 = !{!"clang version 3.6.1 "}
+!4 = !{i32 4, i32 202000}
+!6 = !{!7, !8, i64 0}
+!7 = !{!"_ZTSN2cl12pipe_storageIDv4_iLj1EEE", !8, i64 0}
+!8 = !{!"any pointer", !9, i64 0}
+!9 = !{!"omnipotent char", !10, i64 0}
+!10 = !{!"Simple C/C++ TBAA"}
+!11 = !{!12, !8, i64 0}
+!12 = !{!"_ZTSN2cl4pipeIDv4_iLNS_11pipe_accessE0EEE", !8, i64 0}
+!13 = !{!14, !8, i64 0}
+!14 = !{!"_ZTSN2cl4pipeIDv4_iLNS_11pipe_accessE1EEE", !8, i64 0}
diff --git a/test/SPIRV/ExecutionMode.ll b/test/SPIRV/ExecutionMode.ll
index 309595ec..9858342e 100644
--- a/test/SPIRV/ExecutionMode.ll
+++ b/test/SPIRV/ExecutionMode.ll
@@ -1,150 +1,150 @@
-; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
-; RUN: FileCheck < %t %s
-
-; check for magic number followed by version 1.1
-; CHECK: 119734787 65792
-
-; CHECK-DAG: TypeVoid [[VOID:[0-9]+]]
-
-; CHECK-DAG: EntryPoint 6 [[WORKER:[0-9]+]] "worker"
-; CHECK-DAG: EntryPoint 6 [[INIT:[0-9]+]] "_SPIRV_GLOBAL__I_45b04794_Test_attr.cl"
-; CHECK-DAG: EntryPoint 6 [[FIN:[0-9]+]] "_SPIRV_GLOBAL__D_45b04794_Test_attr.cl"
-
-; CHECK-DAG: ExecutionMode [[WORKER]] 17 10 10 10
-; CHECK-DAG: ExecutionMode [[WORKER]] 18 12 10 1
-; CHECK-DAG: ExecutionMode [[WORKER]] 30 262149
-; CHECK-DAG: ExecutionMode [[WORKER]] 36 4
-; CHECK-DAG: ExecutionMode [[INIT]] 17 1 1 1
-; CHECK-DAG: ExecutionMode [[INIT]] 33
-; CHECK-DAG: ExecutionMode [[FIN]] 17 1 1 1
-; CHECK-DAG: ExecutionMode [[FIN]] 34
-
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-%struct.global_ctor_dtor = type { i32 }
-
-@g = addrspace(1) global %struct.global_ctor_dtor zeroinitializer, align 4
-
-; Function Attrs: nounwind
-define internal spir_func void @__cxx_global_var_init() #0 {
-entry:
- call spir_func void @_ZNU3AS416global_ctor_dtorC1Ei(%struct.global_ctor_dtor addrspace(4)* addrspacecast (%struct.global_ctor_dtor addrspace(1)* @g to %struct.global_ctor_dtor addrspace(4)*), i32 12)
- ret void
-}
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorC1Ei(%struct.global_ctor_dtor addrspace(4)* %this, i32 %i) unnamed_addr #1 align 2 {
-entry:
- %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
- %i.addr = alloca i32, align 4
- store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
- store i32 %i, i32* %i.addr, align 4
- %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
- %0 = load i32, i32* %i.addr, align 4
- call spir_func void @_ZNU3AS416global_ctor_dtorC2Ei(%struct.global_ctor_dtor addrspace(4)* %this1, i32 %0)
- ret void
-}
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorD1Ev(%struct.global_ctor_dtor addrspace(4)* %this) unnamed_addr #1 align 2 {
-entry:
- %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
- store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
- %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
- call spir_func void @_ZNU3AS416global_ctor_dtorD2Ev(%struct.global_ctor_dtor addrspace(4)* %this1) #0
- ret void
-}
-
-; Function Attrs: nounwind
-define internal spir_func void @__dtor_g() #0 {
-entry:
- call spir_func void @_ZNU3AS416global_ctor_dtorD1Ev(%struct.global_ctor_dtor addrspace(4)* addrspacecast (%struct.global_ctor_dtor addrspace(1)* @g to %struct.global_ctor_dtor addrspace(4)*))
- ret void
-}
-
-; CHECK: Function [[VOID]] [[WORKER]]
-
-; Function Attrs: nounwind
-define spir_kernel void @worker() #1 {
-entry:
- ret void
-}
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorD2Ev(%struct.global_ctor_dtor addrspace(4)* %this) unnamed_addr #1 align 2 {
-entry:
- %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
- store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
- %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
- %a = getelementptr inbounds %struct.global_ctor_dtor, %struct.global_ctor_dtor addrspace(4)* %this1, i32 0, i32 0
- store i32 0, i32 addrspace(4)* %a, align 4
- ret void
-}
-
-; Function Attrs: nounwind
-define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorC2Ei(%struct.global_ctor_dtor addrspace(4)* %this, i32 %i) unnamed_addr #1 align 2 {
-entry:
- %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
- %i.addr = alloca i32, align 4
- store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
- store i32 %i, i32* %i.addr, align 4
- %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
- %0 = load i32, i32* %i.addr, align 4
- %a = getelementptr inbounds %struct.global_ctor_dtor, %struct.global_ctor_dtor addrspace(4)* %this1, i32 0, i32 0
- store i32 %0, i32 addrspace(4)* %a, align 4
- ret void
-}
-
-; Function Attrs: nounwind
-define internal spir_func void @_GLOBAL__sub_I_Test_attr.cl() #0 {
-entry:
- call spir_func void @__cxx_global_var_init()
- ret void
-}
-
-; CHECK: Function [[VOID]] [[INIT]]
-
-; Function Attrs: noinline nounwind
-define spir_kernel void @_SPIRV_GLOBAL__I_45b04794_Test_attr.cl() #2 {
-entry:
- call spir_func void @_GLOBAL__sub_I_Test_attr.cl()
- ret void
-}
-
-; CHECK: Function [[VOID]] [[FIN]]
-
-; Function Attrs: noinline nounwind
-define spir_kernel void @_SPIRV_GLOBAL__D_45b04794_Test_attr.cl() #2 {
-entry:
- call spir_func void @__dtor_g()
- ret void
-}
-
-attributes #0 = { nounwind }
-attributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #2 = { noinline nounwind }
-
-!spirv.ExecutionMode = !{!0, !1, !2, !3, !4, !5, !6, !7}
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!8}
-!opencl.ocl.version = !{!9}
-!opencl.used.extensions = !{!10}
-!opencl.used.optional.core.features = !{!10}
-!opencl.compiler.options = !{!10}
-!llvm.ident = !{!11}
-!spirv.Source = !{!12}
-
-!0 = !{void ()* @worker, i32 30, i32 262149}
-!1 = !{void ()* @worker, i32 18, i32 12, i32 10, i32 1}
-!2 = !{void ()* @worker, i32 17, i32 10, i32 10, i32 10}
-!3 = !{void ()* @worker, i32 36, i32 4}
-!4 = !{void ()* @_SPIRV_GLOBAL__I_45b04794_Test_attr.cl, i32 33}
-!5 = !{void ()* @_SPIRV_GLOBAL__I_45b04794_Test_attr.cl, i32 17, i32 1, i32 1, i32 1}
-!6 = !{void ()* @_SPIRV_GLOBAL__D_45b04794_Test_attr.cl, i32 34}
-!7 = !{void ()* @_SPIRV_GLOBAL__D_45b04794_Test_attr.cl, i32 17, i32 1, i32 1, i32 1}
-!8 = !{i32 1, i32 2}
-!9 = !{i32 2, i32 2}
-!10 = !{}
-!11 = !{!"clang version 3.6.1 "}
-!12 = !{i32 4, i32 202000}
+; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
+; RUN: FileCheck < %t %s
+
+; check for magic number followed by version 1.1
+; CHECK: 119734787 65792
+
+; CHECK-DAG: TypeVoid [[VOID:[0-9]+]]
+
+; CHECK-DAG: EntryPoint 6 [[WORKER:[0-9]+]] "worker"
+; CHECK-DAG: EntryPoint 6 [[INIT:[0-9]+]] "_SPIRV_GLOBAL__I_45b04794_Test_attr.cl"
+; CHECK-DAG: EntryPoint 6 [[FIN:[0-9]+]] "_SPIRV_GLOBAL__D_45b04794_Test_attr.cl"
+
+; CHECK-DAG: ExecutionMode [[WORKER]] 17 10 10 10
+; CHECK-DAG: ExecutionMode [[WORKER]] 18 12 10 1
+; CHECK-DAG: ExecutionMode [[WORKER]] 30 262149
+; CHECK-DAG: ExecutionMode [[WORKER]] 36 4
+; CHECK-DAG: ExecutionMode [[INIT]] 17 1 1 1
+; CHECK-DAG: ExecutionMode [[INIT]] 33
+; CHECK-DAG: ExecutionMode [[FIN]] 17 1 1 1
+; CHECK-DAG: ExecutionMode [[FIN]] 34
+
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+%struct.global_ctor_dtor = type { i32 }
+
+@g = addrspace(1) global %struct.global_ctor_dtor zeroinitializer, align 4
+
+; Function Attrs: nounwind
+define internal spir_func void @__cxx_global_var_init() #0 {
+entry:
+ call spir_func void @_ZNU3AS416global_ctor_dtorC1Ei(%struct.global_ctor_dtor addrspace(4)* addrspacecast (%struct.global_ctor_dtor addrspace(1)* @g to %struct.global_ctor_dtor addrspace(4)*), i32 12)
+ ret void
+}
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorC1Ei(%struct.global_ctor_dtor addrspace(4)* %this, i32 %i) unnamed_addr #1 align 2 {
+entry:
+ %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
+ %i.addr = alloca i32, align 4
+ store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
+ store i32 %i, i32* %i.addr, align 4
+ %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
+ %0 = load i32, i32* %i.addr, align 4
+ call spir_func void @_ZNU3AS416global_ctor_dtorC2Ei(%struct.global_ctor_dtor addrspace(4)* %this1, i32 %0)
+ ret void
+}
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorD1Ev(%struct.global_ctor_dtor addrspace(4)* %this) unnamed_addr #1 align 2 {
+entry:
+ %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
+ store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
+ %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
+ call spir_func void @_ZNU3AS416global_ctor_dtorD2Ev(%struct.global_ctor_dtor addrspace(4)* %this1) #0
+ ret void
+}
+
+; Function Attrs: nounwind
+define internal spir_func void @__dtor_g() #0 {
+entry:
+ call spir_func void @_ZNU3AS416global_ctor_dtorD1Ev(%struct.global_ctor_dtor addrspace(4)* addrspacecast (%struct.global_ctor_dtor addrspace(1)* @g to %struct.global_ctor_dtor addrspace(4)*))
+ ret void
+}
+
+; CHECK: Function [[VOID]] [[WORKER]]
+
+; Function Attrs: nounwind
+define spir_kernel void @worker() #1 {
+entry:
+ ret void
+}
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorD2Ev(%struct.global_ctor_dtor addrspace(4)* %this) unnamed_addr #1 align 2 {
+entry:
+ %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
+ store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
+ %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
+ %a = getelementptr inbounds %struct.global_ctor_dtor, %struct.global_ctor_dtor addrspace(4)* %this1, i32 0, i32 0
+ store i32 0, i32 addrspace(4)* %a, align 4
+ ret void
+}
+
+; Function Attrs: nounwind
+define linkonce_odr spir_func void @_ZNU3AS416global_ctor_dtorC2Ei(%struct.global_ctor_dtor addrspace(4)* %this, i32 %i) unnamed_addr #1 align 2 {
+entry:
+ %this.addr = alloca %struct.global_ctor_dtor addrspace(4)*, align 4
+ %i.addr = alloca i32, align 4
+ store %struct.global_ctor_dtor addrspace(4)* %this, %struct.global_ctor_dtor addrspace(4)** %this.addr, align 4
+ store i32 %i, i32* %i.addr, align 4
+ %this1 = load %struct.global_ctor_dtor addrspace(4)*, %struct.global_ctor_dtor addrspace(4)** %this.addr
+ %0 = load i32, i32* %i.addr, align 4
+ %a = getelementptr inbounds %struct.global_ctor_dtor, %struct.global_ctor_dtor addrspace(4)* %this1, i32 0, i32 0
+ store i32 %0, i32 addrspace(4)* %a, align 4
+ ret void
+}
+
+; Function Attrs: nounwind
+define internal spir_func void @_GLOBAL__sub_I_Test_attr.cl() #0 {
+entry:
+ call spir_func void @__cxx_global_var_init()
+ ret void
+}
+
+; CHECK: Function [[VOID]] [[INIT]]
+
+; Function Attrs: noinline nounwind
+define spir_kernel void @_SPIRV_GLOBAL__I_45b04794_Test_attr.cl() #2 {
+entry:
+ call spir_func void @_GLOBAL__sub_I_Test_attr.cl()
+ ret void
+}
+
+; CHECK: Function [[VOID]] [[FIN]]
+
+; Function Attrs: noinline nounwind
+define spir_kernel void @_SPIRV_GLOBAL__D_45b04794_Test_attr.cl() #2 {
+entry:
+ call spir_func void @__dtor_g()
+ ret void
+}
+
+attributes #0 = { nounwind }
+attributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #2 = { noinline nounwind }
+
+!spirv.ExecutionMode = !{!0, !1, !2, !3, !4, !5, !6, !7}
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!8}
+!opencl.ocl.version = !{!9}
+!opencl.used.extensions = !{!10}
+!opencl.used.optional.core.features = !{!10}
+!opencl.compiler.options = !{!10}
+!llvm.ident = !{!11}
+!spirv.Source = !{!12}
+
+!0 = !{void ()* @worker, i32 30, i32 262149}
+!1 = !{void ()* @worker, i32 18, i32 12, i32 10, i32 1}
+!2 = !{void ()* @worker, i32 17, i32 10, i32 10, i32 10}
+!3 = !{void ()* @worker, i32 36, i32 4}
+!4 = !{void ()* @_SPIRV_GLOBAL__I_45b04794_Test_attr.cl, i32 33}
+!5 = !{void ()* @_SPIRV_GLOBAL__I_45b04794_Test_attr.cl, i32 17, i32 1, i32 1, i32 1}
+!6 = !{void ()* @_SPIRV_GLOBAL__D_45b04794_Test_attr.cl, i32 34}
+!7 = !{void ()* @_SPIRV_GLOBAL__D_45b04794_Test_attr.cl, i32 17, i32 1, i32 1, i32 1}
+!8 = !{i32 1, i32 2}
+!9 = !{i32 2, i32 2}
+!10 = !{}
+!11 = !{!"clang version 3.6.1 "}
+!12 = !{i32 4, i32 202000}
diff --git a/test/SPIRV/ExecutionMode_SPIR_to_SPIRV.ll b/test/SPIRV/ExecutionMode_SPIR_to_SPIRV.ll
index b8b2bb82..341bde87 100644
--- a/test/SPIRV/ExecutionMode_SPIR_to_SPIRV.ll
+++ b/test/SPIRV/ExecutionMode_SPIR_to_SPIRV.ll
@@ -1,54 +1,54 @@
-; RUN: llvm-as %s -o %t.bc
-; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
-; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
-; RUN: llvm-spirv %t.bc -o %t.spv
-; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
-; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
-
-; LLVM => SPIRV checks
-; check for magic number followed by version 1.0
-; CHECK-SPIRV: 119734787 65536
-
-; CHECK-SPIRV-DAG: EntryPoint 6 [[WORKER:[0-9]+]] "worker"
-; CHECK-SPIRV-DAG: ExecutionMode [[WORKER]] 18 128 10 1
-
-
-; LLVM => SPIRV => LLVM checks
-; CHECK-LLVM: define spir_kernel void @worker()
-; CHECK-LLVM: !opencl.kernels = !{![[KERNEL_MD:[0-9]+]]}
-
-; CHECK-LLVM-DAG: ![[EXEC_MODE_MD:[0-9]+]] = !{!"work_group_size_hint", i32 128, i32 10, i32 1}
-; CHECK-LLVM-DAG: ![[KERNEL_MD]] = !{void ()* @worker, {{.*}}![[EXEC_MODE_MD]]{{.*}}}
-
-
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
-target triple = "spir-unknown-unknown"
-
-; Function Attrs: nounwind
-define spir_kernel void @worker() #0 {
-entry:
- ret void
-}
-
-attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-
-!opencl.kernels = !{!0}
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!7}
-!opencl.ocl.version = !{!7}
-!opencl.used.extensions = !{!8}
-!opencl.used.optional.core.features = !{!8}
-!opencl.compiler.options = !{!8}
-!llvm.ident = !{!9}
-
-!0 = !{void ()* @worker, !1, !2, !3, !4, !5, !6}
-!1 = !{!"kernel_arg_addr_space"}
-!2 = !{!"kernel_arg_access_qual"}
-!3 = !{!"kernel_arg_type"}
-!4 = !{!"kernel_arg_base_type"}
-!5 = !{!"kernel_arg_type_qual"}
-!6 = !{!"work_group_size_hint", i32 128, i32 10, i32 1}
-!7 = !{i32 1, i32 2}
-!8 = !{}
-!9 = !{!"clang version 3.6.1 "}
+; RUN: llvm-as %s -o %t.bc
+; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
+; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
+; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+
+; LLVM => SPIRV checks
+; check for magic number followed by version 1.0
+; CHECK-SPIRV: 119734787 65536
+
+; CHECK-SPIRV-DAG: EntryPoint 6 [[WORKER:[0-9]+]] "worker"
+; CHECK-SPIRV-DAG: ExecutionMode [[WORKER]] 18 128 10 1
+
+
+; LLVM => SPIRV => LLVM checks
+; CHECK-LLVM: define spir_kernel void @worker()
+; CHECK-LLVM: !opencl.kernels = !{![[KERNEL_MD:[0-9]+]]}
+
+; CHECK-LLVM-DAG: ![[EXEC_MODE_MD:[0-9]+]] = !{!"work_group_size_hint", i32 128, i32 10, i32 1}
+; CHECK-LLVM-DAG: ![[KERNEL_MD]] = !{void ()* @worker, {{.*}}![[EXEC_MODE_MD]]{{.*}}}
+
+
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
+target triple = "spir-unknown-unknown"
+
+; Function Attrs: nounwind
+define spir_kernel void @worker() #0 {
+entry:
+ ret void
+}
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!opencl.kernels = !{!0}
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!7}
+!opencl.ocl.version = !{!7}
+!opencl.used.extensions = !{!8}
+!opencl.used.optional.core.features = !{!8}
+!opencl.compiler.options = !{!8}
+!llvm.ident = !{!9}
+
+!0 = !{void ()* @worker, !1, !2, !3, !4, !5, !6}
+!1 = !{!"kernel_arg_addr_space"}
+!2 = !{!"kernel_arg_access_qual"}
+!3 = !{!"kernel_arg_type"}
+!4 = !{!"kernel_arg_base_type"}
+!5 = !{!"kernel_arg_type_qual"}
+!6 = !{!"work_group_size_hint", i32 128, i32 10, i32 1}
+!7 = !{i32 1, i32 2}
+!8 = !{}
+!9 = !{!"clang version 3.6.1 "}
diff --git a/test/SPIRV/PipeStorage.ll b/test/SPIRV/PipeStorage.ll
index 1fa0d936..7a5b5d46 100644
--- a/test/SPIRV/PipeStorage.ll
+++ b/test/SPIRV/PipeStorage.ll
@@ -1,58 +1,58 @@
-; RUN: llvm-as %s -o %t.bc
-; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
-; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
-; RUN: llvm-spirv %t.bc -o %t.spv
-; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
-; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
-
-; CHECK-LLVM: %spirv.ConstantPipeStorage = type { i32, i32, i32 }
-; CHECK-LLVM: %"[[CL_PIPE_STORAGE_NAME:[^"]+]]" = type { %spirv.PipeStorage addrspace(1)* }
-; CHECK-LLVM: %spirv.PipeStorage = type opaque
-; CHECK-LLVM: [[CREATOR_NAME:[^ ]+]] = linkonce_odr addrspace(1) global %spirv.ConstantPipeStorage { i32 16, i32 16, i32 1 }, align 4
-; CHECK-LLVM: @mygpipe = addrspace(1) global %"[[CL_PIPE_STORAGE_NAME]]" { %spirv.PipeStorage addrspace(1)* bitcast (%spirv.ConstantPipeStorage addrspace(1)* [[CREATOR_NAME]] to %spirv.PipeStorage addrspace(1)*) }, align 4
-
-; check for magic number followed by version 1.1
-; CHECK-SPIRV: 119734787 65792
-
-; CHECK-SPIRV: 4 Name [[MYPIPE_ID:[0-9]+]] "mygpipe"
-
-; CHECK-SPIRV: 2 TypePipeStorage [[PIPE_STORAGE_ID:[0-9]+]]
-; CHECK-SPIRV-NEXT: 2 TypePipeStorage [[PIPE_STORAGE_ID_2:[0-9]+]]
-; CHECK-SPIRV: 3 TypeStruct [[CL_PIPE_STORAGE_ID:[0-9]+]] [[PIPE_STORAGE_ID_2]]
-; CHECK-SPIRV: 4 TypePointer [[CL_PIPE_STORAGE_PTR_ID:[0-9]+]] 5 [[CL_PIPE_STORAGE_ID]]
-
-; CHECK-SPIRV: 6 ConstantPipeStorage [[PIPE_STORAGE_ID]] [[CPS_ID:[0-9]+]] 16 16 1
-; CHECK-SPIRV: 4 ConstantComposite [[CL_PIPE_STORAGE_ID]] [[COMPOSITE_ID:[0-9]+]] [[CPS_ID]]
-; CHECK-SPIRV: 5 Variable [[CL_PIPE_STORAGE_PTR_ID]] [[MYPIPE_ID]] 5 [[COMPOSITE_ID]]
-
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-%spirv.ConstantPipeStorage = type { i32, i32, i32 }
-%"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" = type { %spirv.PipeStorage addrspace(1)* }
-%spirv.PipeStorage = type opaque
-
-@_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE = linkonce_odr addrspace(1) global %spirv.ConstantPipeStorage { i32 16, i32 16, i32 1 }, align 4
-@mygpipe = addrspace(1) global %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" { %spirv.PipeStorage addrspace(1)* bitcast (%spirv.ConstantPipeStorage addrspace(1)* @_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE to %spirv.PipeStorage addrspace(1)*) }, align 4
-
-; Function Attrs: nounwind
-define spir_kernel void @worker() {
-entry:
- ret void
-}
-
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!0}
-!opencl.ocl.version = !{!1}
-!opencl.used.extensions = !{!2}
-!opencl.used.optional.core.features = !{!2}
-!opencl.compiler.options = !{!2}
-!llvm.ident = !{!3}
-!spirv.Source = !{!4}
-!spirv.String = !{}
-
-!0 = !{i32 1, i32 2}
-!1 = !{i32 2, i32 2}
-!2 = !{}
-!3 = !{!"clang version 3.6.1 "}
-!4 = !{i32 4, i32 202000}
+; RUN: llvm-as %s -o %t.bc
+; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
+; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
+; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+
+; CHECK-LLVM: %spirv.ConstantPipeStorage = type { i32, i32, i32 }
+; CHECK-LLVM: %"[[CL_PIPE_STORAGE_NAME:[^"]+]]" = type { %spirv.PipeStorage addrspace(1)* }
+; CHECK-LLVM: %spirv.PipeStorage = type opaque
+; CHECK-LLVM: [[CREATOR_NAME:[^ ]+]] = linkonce_odr addrspace(1) global %spirv.ConstantPipeStorage { i32 16, i32 16, i32 1 }, align 4
+; CHECK-LLVM: @mygpipe = addrspace(1) global %"[[CL_PIPE_STORAGE_NAME]]" { %spirv.PipeStorage addrspace(1)* bitcast (%spirv.ConstantPipeStorage addrspace(1)* [[CREATOR_NAME]] to %spirv.PipeStorage addrspace(1)*) }, align 4
+
+; check for magic number followed by version 1.1
+; CHECK-SPIRV: 119734787 65792
+
+; CHECK-SPIRV: 4 Name [[MYPIPE_ID:[0-9]+]] "mygpipe"
+
+; CHECK-SPIRV: 2 TypePipeStorage [[PIPE_STORAGE_ID:[0-9]+]]
+; CHECK-SPIRV-NEXT: 2 TypePipeStorage [[PIPE_STORAGE_ID_2:[0-9]+]]
+; CHECK-SPIRV: 3 TypeStruct [[CL_PIPE_STORAGE_ID:[0-9]+]] [[PIPE_STORAGE_ID_2]]
+; CHECK-SPIRV: 4 TypePointer [[CL_PIPE_STORAGE_PTR_ID:[0-9]+]] 5 [[CL_PIPE_STORAGE_ID]]
+
+; CHECK-SPIRV: 6 ConstantPipeStorage [[PIPE_STORAGE_ID]] [[CPS_ID:[0-9]+]] 16 16 1
+; CHECK-SPIRV: 4 ConstantComposite [[CL_PIPE_STORAGE_ID]] [[COMPOSITE_ID:[0-9]+]] [[CPS_ID]]
+; CHECK-SPIRV: 5 Variable [[CL_PIPE_STORAGE_PTR_ID]] [[MYPIPE_ID]] 5 [[COMPOSITE_ID]]
+
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+%spirv.ConstantPipeStorage = type { i32, i32, i32 }
+%"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" = type { %spirv.PipeStorage addrspace(1)* }
+%spirv.PipeStorage = type opaque
+
+@_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE = linkonce_odr addrspace(1) global %spirv.ConstantPipeStorage { i32 16, i32 16, i32 1 }, align 4
+@mygpipe = addrspace(1) global %"class.cl::pipe_storage<int __attribute__((ext_vector_type(4))), 1>" { %spirv.PipeStorage addrspace(1)* bitcast (%spirv.ConstantPipeStorage addrspace(1)* @_ZN2cl9__details29OpConstantPipeStorage_CreatorILi16ELi16ELi1EE5valueE to %spirv.PipeStorage addrspace(1)*) }, align 4
+
+; Function Attrs: nounwind
+define spir_kernel void @worker() {
+entry:
+ ret void
+}
+
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!0}
+!opencl.ocl.version = !{!1}
+!opencl.used.extensions = !{!2}
+!opencl.used.optional.core.features = !{!2}
+!opencl.compiler.options = !{!2}
+!llvm.ident = !{!3}
+!spirv.Source = !{!4}
+!spirv.String = !{}
+
+!0 = !{i32 1, i32 2}
+!1 = !{i32 2, i32 2}
+!2 = !{}
+!3 = !{!"clang version 3.6.1 "}
+!4 = !{i32 4, i32 202000}
diff --git a/test/SPIRV/SPIRVVersionAutodetect_1_0.ll b/test/SPIRV/SPIRVVersionAutodetect_1_0.ll
index f0ed8edb..8508b97e 100644
--- a/test/SPIRV/SPIRVVersionAutodetect_1_0.ll
+++ b/test/SPIRV/SPIRVVersionAutodetect_1_0.ll
@@ -1,31 +1,31 @@
-; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
-; RUN: FileCheck < %t %s
-
-; check for magic number followed by version 1.0
-; CHECK: 119734787 65536
-
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-; Function Attrs: nounwind
-define spir_kernel void @worker() #0 {
-entry:
- ret void
-}
-
-attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!6}
-!opencl.ocl.version = !{!7}
-!opencl.used.extensions = !{!8}
-!opencl.used.optional.core.features = !{!8}
-!opencl.compiler.options = !{!8}
-!llvm.ident = !{!9}
-!spirv.Source = !{!10}
-
-!6 = !{i32 1, i32 2}
-!7 = !{i32 2, i32 2}
-!8 = !{}
-!9 = !{!"clang version 3.6.1 "}
-!10 = !{i32 4, i32 202000}
+; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
+; RUN: FileCheck < %t %s
+
+; check for magic number followed by version 1.0
+; CHECK: 119734787 65536
+
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+; Function Attrs: nounwind
+define spir_kernel void @worker() #0 {
+entry:
+ ret void
+}
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!6}
+!opencl.ocl.version = !{!7}
+!opencl.used.extensions = !{!8}
+!opencl.used.optional.core.features = !{!8}
+!opencl.compiler.options = !{!8}
+!llvm.ident = !{!9}
+!spirv.Source = !{!10}
+
+!6 = !{i32 1, i32 2}
+!7 = !{i32 2, i32 2}
+!8 = !{}
+!9 = !{!"clang version 3.6.1 "}
+!10 = !{i32 4, i32 202000}
diff --git a/test/SPIRV/SPIRVVersionAutodetect_1_1.ll b/test/SPIRV/SPIRVVersionAutodetect_1_1.ll
index 96751cf6..43ca3fab 100644
--- a/test/SPIRV/SPIRVVersionAutodetect_1_1.ll
+++ b/test/SPIRV/SPIRVVersionAutodetect_1_1.ll
@@ -1,33 +1,33 @@
-; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
-; RUN: FileCheck < %t %s
-
-; check for magic number followed by version 1.1
-; CHECK: 119734787 65792
-
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-; Function Attrs: nounwind
-define spir_kernel void @worker() #0 {
-entry:
- ret void
-}
-
-attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-
-!spirv.ExecutionMode = !{!0}
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!6}
-!opencl.ocl.version = !{!7}
-!opencl.used.extensions = !{!8}
-!opencl.used.optional.core.features = !{!8}
-!opencl.compiler.options = !{!8}
-!llvm.ident = !{!9}
-!spirv.Source = !{!10}
-
-!0 = !{void ()* @worker, i32 33}
-!6 = !{i32 1, i32 2}
-!7 = !{i32 2, i32 2}
-!8 = !{}
-!9 = !{!"clang version 3.6.1 "}
-!10 = !{i32 4, i32 202000}
+; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
+; RUN: FileCheck < %t %s
+
+; check for magic number followed by version 1.1
+; CHECK: 119734787 65792
+
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+; Function Attrs: nounwind
+define spir_kernel void @worker() #0 {
+entry:
+ ret void
+}
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!spirv.ExecutionMode = !{!0}
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!6}
+!opencl.ocl.version = !{!7}
+!opencl.used.extensions = !{!8}
+!opencl.used.optional.core.features = !{!8}
+!opencl.compiler.options = !{!8}
+!llvm.ident = !{!9}
+!spirv.Source = !{!10}
+
+!0 = !{void ()* @worker, i32 33}
+!6 = !{i32 1, i32 2}
+!7 = !{i32 2, i32 2}
+!8 = !{}
+!9 = !{!"clang version 3.6.1 "}
+!10 = !{i32 4, i32 202000}
diff --git a/test/SPIRV/builtin_vars-decorate.ll b/test/SPIRV/builtin_vars-decorate.ll
index 39d66535..d3ede335 100644
--- a/test/SPIRV/builtin_vars-decorate.ll
+++ b/test/SPIRV/builtin_vars-decorate.ll
@@ -1,96 +1,96 @@
-; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
-; RUN: FileCheck < %t %s
-
-; ModuleID = 'test.cl'
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-; CHECK: {{[0-9]+}} Name [[WD:[0-9]+]] "__spirv_BuiltInWorkDim"
-; CHECK: {{[0-9]+}} Name [[GS:[0-9]+]] "__spirv_BuiltInGlobalSize"
-; CHECK: {{[0-9]+}} Name [[GII:[0-9]+]] "__spirv_BuiltInGlobalInvocationId"
-; CHECK: {{[0-9]+}} Name [[WS:[0-9]+]] "__spirv_BuiltInWorkgroupSize"
-; CHECK: {{[0-9]+}} Name [[EWS:[0-9]+]] "__spirv_BuiltInEnqueuedWorkgroupSize"
-; CHECK: {{[0-9]+}} Name [[LLI:[0-9]+]] "__spirv_BuiltInLocalInvocationId"
-; CHECK: {{[0-9]+}} Name [[NW:[0-9]+]] "__spirv_BuiltInNumWorkgroups"
-; CHECK: {{[0-9]+}} Name [[WI:[0-9]+]] "__spirv_BuiltInWorkgroupId"
-; CHECK: {{[0-9]+}} Name [[GO:[0-9]+]] "__spirv_BuiltInGlobalOffset"
-; CHECK: {{[0-9]+}} Name [[GLI:[0-9]+]] "__spirv_BuiltInGlobalLinearId"
-; CHECK: {{[0-9]+}} Name [[LLII:[0-9]+]] "__spirv_BuiltInLocalInvocationIndex"
-; CHECK: {{[0-9]+}} Name [[SS:[0-9]+]] "__spirv_BuiltInSubgroupSize"
-; CHECK: {{[0-9]+}} Name [[SMS:[0-9]+]] "__spirv_BuiltInSubgroupMaxSize"
-; CHECK: {{[0-9]+}} Name [[NS:[0-9]+]] "__spirv_BuiltInNumSubgroups"
-; CHECK: {{[0-9]+}} Name [[NES:[0-9]+]] "__spirv_BuiltInNumEnqueuedSubgroups"
-; CHECK: {{[0-9]+}} Name [[SI:[0-9]+]] "__spirv_BuiltInSubgroupId"
-; CHECK: {{[0-9]+}} Name [[SLII:[0-9]+]] "__spirv_BuiltInSubgroupLocalInvocationId"
-
-; CHECK: 4 Decorate [[NW]] BuiltIn 24
-; CHECK: 4 Decorate [[WS]] BuiltIn 25
-; CHECK: 4 Decorate [[WI]] BuiltIn 26
-; CHECK: 4 Decorate [[LLI]] BuiltIn 27
-; CHECK: 4 Decorate [[GII]] BuiltIn 28
-; CHECK: 4 Decorate [[LLII]] BuiltIn 29
-; CHECK: 4 Decorate [[WD]] BuiltIn 30
-; CHECK: 4 Decorate [[GS]] BuiltIn 31
-; CHECK: 4 Decorate [[EWS]] BuiltIn 32
-; CHECK: 4 Decorate [[GO]] BuiltIn 33
-; CHECK: 4 Decorate [[GLI]] BuiltIn 34
-; CHECK: 4 Decorate [[SS]] BuiltIn 36
-; CHECK: 4 Decorate [[SMS]] BuiltIn 37
-; CHECK: 4 Decorate [[NS]] BuiltIn 38
-; CHECK: 4 Decorate [[NES]] BuiltIn 39
-; CHECK: 4 Decorate [[SI]] BuiltIn 40
-; CHECK: 4 Decorate [[SLII]] BuiltIn 41
-@__spirv_BuiltInWorkDim = external addrspace(1) global i32
-@__spirv_BuiltInGlobalSize = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInGlobalInvocationId = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInWorkgroupSize = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInEnqueuedWorkgroupSize = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInLocalInvocationId = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInNumWorkgroups = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInWorkgroupId = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInGlobalOffset = external addrspace(1) global <3 x i32>
-@__spirv_BuiltInGlobalLinearId = external addrspace(1) global i32
-@__spirv_BuiltInLocalInvocationIndex = external addrspace(1) global i32
-@__spirv_BuiltInSubgroupSize = external addrspace(1) global i32
-@__spirv_BuiltInSubgroupMaxSize = external addrspace(1) global i32
-@__spirv_BuiltInNumSubgroups = external addrspace(1) global i32
-@__spirv_BuiltInNumEnqueuedSubgroups = external addrspace(1) global i32
-@__spirv_BuiltInSubgroupId = external addrspace(1) global i32
-@__spirv_BuiltInSubgroupLocalInvocationId = external addrspace(1) global i32
-
-; Function Attrs: nounwind readnone
-define spir_kernel void @_Z1wv() #1 {
-entry:
- ret void
-}
-
-attributes #0 = { alwaysinline nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-
-!opencl.kernels = !{!0}
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!6}
-!opencl.ocl.version = !{!7}
-!opencl.used.extensions = !{!8}
-!opencl.used.optional.core.features = !{!8}
-!opencl.compiler.options = !{!8}
-!llvm.ident = !{!9}
-!spirv.Source = !{!10}
-!spirv.String = !{!11}
-
-!0 = !{void ()* @_Z1wv, !1, !2, !3, !4, !5}
-!1 = !{!"kernel_arg_addr_space"}
-!2 = !{!"kernel_arg_access_qual"}
-!3 = !{!"kernel_arg_type"}
-!4 = !{!"kernel_arg_base_type"}
-!5 = !{!"kernel_arg_type_qual"}
-!6 = !{i32 1, i32 2}
-!7 = !{i32 2, i32 1}
-!8 = !{}
-!9 = !{!"clang version 3.6.1 "}
-!10 = !{i32 3, i32 200000, !11}
-!11 = !{!"test.cl"}
-!12 = !{!13, !13, i64 0}
-!13 = !{!"int", !14, i64 0}
-!14 = !{!"omnipotent char", !15, i64 0}
-!15 = !{!"Simple C/C++ TBAA"}
+; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
+; RUN: FileCheck < %t %s
+
+; ModuleID = 'test.cl'
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+; CHECK: {{[0-9]+}} Name [[WD:[0-9]+]] "__spirv_BuiltInWorkDim"
+; CHECK: {{[0-9]+}} Name [[GS:[0-9]+]] "__spirv_BuiltInGlobalSize"
+; CHECK: {{[0-9]+}} Name [[GII:[0-9]+]] "__spirv_BuiltInGlobalInvocationId"
+; CHECK: {{[0-9]+}} Name [[WS:[0-9]+]] "__spirv_BuiltInWorkgroupSize"
+; CHECK: {{[0-9]+}} Name [[EWS:[0-9]+]] "__spirv_BuiltInEnqueuedWorkgroupSize"
+; CHECK: {{[0-9]+}} Name [[LLI:[0-9]+]] "__spirv_BuiltInLocalInvocationId"
+; CHECK: {{[0-9]+}} Name [[NW:[0-9]+]] "__spirv_BuiltInNumWorkgroups"
+; CHECK: {{[0-9]+}} Name [[WI:[0-9]+]] "__spirv_BuiltInWorkgroupId"
+; CHECK: {{[0-9]+}} Name [[GO:[0-9]+]] "__spirv_BuiltInGlobalOffset"
+; CHECK: {{[0-9]+}} Name [[GLI:[0-9]+]] "__spirv_BuiltInGlobalLinearId"
+; CHECK: {{[0-9]+}} Name [[LLII:[0-9]+]] "__spirv_BuiltInLocalInvocationIndex"
+; CHECK: {{[0-9]+}} Name [[SS:[0-9]+]] "__spirv_BuiltInSubgroupSize"
+; CHECK: {{[0-9]+}} Name [[SMS:[0-9]+]] "__spirv_BuiltInSubgroupMaxSize"
+; CHECK: {{[0-9]+}} Name [[NS:[0-9]+]] "__spirv_BuiltInNumSubgroups"
+; CHECK: {{[0-9]+}} Name [[NES:[0-9]+]] "__spirv_BuiltInNumEnqueuedSubgroups"
+; CHECK: {{[0-9]+}} Name [[SI:[0-9]+]] "__spirv_BuiltInSubgroupId"
+; CHECK: {{[0-9]+}} Name [[SLII:[0-9]+]] "__spirv_BuiltInSubgroupLocalInvocationId"
+
+; CHECK: 4 Decorate [[NW]] BuiltIn 24
+; CHECK: 4 Decorate [[WS]] BuiltIn 25
+; CHECK: 4 Decorate [[WI]] BuiltIn 26
+; CHECK: 4 Decorate [[LLI]] BuiltIn 27
+; CHECK: 4 Decorate [[GII]] BuiltIn 28
+; CHECK: 4 Decorate [[LLII]] BuiltIn 29
+; CHECK: 4 Decorate [[WD]] BuiltIn 30
+; CHECK: 4 Decorate [[GS]] BuiltIn 31
+; CHECK: 4 Decorate [[EWS]] BuiltIn 32
+; CHECK: 4 Decorate [[GO]] BuiltIn 33
+; CHECK: 4 Decorate [[GLI]] BuiltIn 34
+; CHECK: 4 Decorate [[SS]] BuiltIn 36
+; CHECK: 4 Decorate [[SMS]] BuiltIn 37
+; CHECK: 4 Decorate [[NS]] BuiltIn 38
+; CHECK: 4 Decorate [[NES]] BuiltIn 39
+; CHECK: 4 Decorate [[SI]] BuiltIn 40
+; CHECK: 4 Decorate [[SLII]] BuiltIn 41
+@__spirv_BuiltInWorkDim = external addrspace(1) global i32
+@__spirv_BuiltInGlobalSize = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInGlobalInvocationId = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInWorkgroupSize = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInEnqueuedWorkgroupSize = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInLocalInvocationId = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInNumWorkgroups = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInWorkgroupId = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInGlobalOffset = external addrspace(1) global <3 x i32>
+@__spirv_BuiltInGlobalLinearId = external addrspace(1) global i32
+@__spirv_BuiltInLocalInvocationIndex = external addrspace(1) global i32
+@__spirv_BuiltInSubgroupSize = external addrspace(1) global i32
+@__spirv_BuiltInSubgroupMaxSize = external addrspace(1) global i32
+@__spirv_BuiltInNumSubgroups = external addrspace(1) global i32
+@__spirv_BuiltInNumEnqueuedSubgroups = external addrspace(1) global i32
+@__spirv_BuiltInSubgroupId = external addrspace(1) global i32
+@__spirv_BuiltInSubgroupLocalInvocationId = external addrspace(1) global i32
+
+; Function Attrs: nounwind readnone
+define spir_kernel void @_Z1wv() #1 {
+entry:
+ ret void
+}
+
+attributes #0 = { alwaysinline nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!opencl.kernels = !{!0}
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!6}
+!opencl.ocl.version = !{!7}
+!opencl.used.extensions = !{!8}
+!opencl.used.optional.core.features = !{!8}
+!opencl.compiler.options = !{!8}
+!llvm.ident = !{!9}
+!spirv.Source = !{!10}
+!spirv.String = !{!11}
+
+!0 = !{void ()* @_Z1wv, !1, !2, !3, !4, !5}
+!1 = !{!"kernel_arg_addr_space"}
+!2 = !{!"kernel_arg_access_qual"}
+!3 = !{!"kernel_arg_type"}
+!4 = !{!"kernel_arg_base_type"}
+!5 = !{!"kernel_arg_type_qual"}
+!6 = !{i32 1, i32 2}
+!7 = !{i32 2, i32 1}
+!8 = !{}
+!9 = !{!"clang version 3.6.1 "}
+!10 = !{i32 3, i32 200000, !11}
+!11 = !{!"test.cl"}
+!12 = !{!13, !13, i64 0}
+!13 = !{!"int", !14, i64 0}
+!14 = !{!"omnipotent char", !15, i64 0}
+!15 = !{!"Simple C/C++ TBAA"}
diff --git a/test/SPIRV/linkage-types.ll b/test/SPIRV/linkage-types.ll
index bae9194b..9e0ba2a1 100644
--- a/test/SPIRV/linkage-types.ll
+++ b/test/SPIRV/linkage-types.ll
@@ -1,167 +1,167 @@
-; RUN: llvm-as < %s > %t.bc
-; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
-; RUN: FileCheck < %t.txt %s --check-prefix=SPIRV
-; RUN: llvm-spirv %t.bc -o %t.spv
-; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
-; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=BACK-TO-LLVM
-
-; ModuleID = 'c:/work/tmp/testLink.c'
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-; SPIRV: Capability Linkage
-; SPIRV: EntryPoint 6 [[kern:[0-9]+]] "kern"
-
-@ae = available_externally addrspace(1) global i32 79, align 4
-; SPIRV: Name [[ae:[0-9]+]] "ae"
-; BACK-TO-LLVM: @ae = available_externally addrspace(1) global i32 79, align 4
-
-@i1 = addrspace(1) global i32 1, align 4
-; SPIRV: Name [[i1:[0-9]+]] "i1"
-; BACK-TO-LLVM: @i1 = addrspace(1) global i32 1, align 4
-
-@i2 = internal addrspace(1) global i32 2, align 4
-; SPIRV: Name [[i2:[0-9]+]] "i2"
-; BACK-TO-LLVM: @i2 = internal addrspace(1) global i32 2, align 4
-
-@i3 = addrspace(1) global i32 3, align 4
-; SPIRV: Name [[i3:[0-9]+]] "i3"
-; BACK-TO-LLVM: @i3 = addrspace(1) global i32 3, align 4
-
-@i4 = common addrspace(1) global i32 0, align 4
-; SPIRV: Name [[i4:[0-9]+]] "i4"
-; BACK-TO-LLVM: @i4 = common addrspace(1) global i32 0, align 4
-
-@i5 = internal addrspace(1) global i32 0, align 4
-; SPIRV: Name [[i5:[0-9]+]] "i5"
-; BACK-TO-LLVM: @i5 = internal addrspace(1) global i32 0, align 4
-
-@color_table = addrspace(2) constant [2 x i32] [i32 0, i32 1], align 4
-; SPIRV: Name [[color_table:[0-9]+]] "color_table"
-; BACK-TO-LLVM: @color_table = addrspace(2) constant [2 x i32] [i32 0, i32 1], align 4
-
-@noise_table = external addrspace(2) constant [256 x i32]
-; SPIRV: Name [[noise_table:[0-9]+]] "noise_table"
-; BACK-TO-LLVM: @noise_table = external addrspace(2) constant [256 x i32]
-
-@w = addrspace(1) constant i32 0, align 4
-; SPIRV: Name [[w:[0-9]+]] "w"
-; BACK-TO-LLVM: @w = addrspace(1) constant i32 0, align 4
-
-@f.color_table = internal addrspace(2) constant [2 x i32] [i32 2, i32 3], align 4
-; SPIRV: Name [[f_color_table:[0-9]+]] "f.color_table"
-; BACK-TO-LLVM: @f.color_table = internal addrspace(2) constant [2 x i32] [i32 2, i32 3], align 4
-
-@e = external addrspace(1) global i32
-; SPIRV: Name [[e:[0-9]+]] "e"
-; BACK-TO-LLVM: @e = external addrspace(1) global i32
-
-@f.t = internal addrspace(1) global i32 5, align 4
-; SPIRV: Name [[f_t:[0-9]+]] "f.t"
-; BACK-TO-LLVM: @f.t = internal addrspace(1) global i32 5, align 4
-
-@f.stint = internal addrspace(1) global i32 0, align 4
-; SPIRV: Name [[f_stint:[0-9]+]] "f.stint"
-; BACK-TO-LLVM: @f.stint = internal addrspace(1) global i32 0, align 4
-
-@f.inside = internal addrspace(1) global i32 0, align 4
-; SPIRV: Name [[f_inside:[0-9]+]] "f.inside"
-; BACK-TO-LLVM: @f.inside = internal addrspace(1) global i32 0, align 4
-
-@f.b = internal addrspace(2) constant float 1.000000e+00, align 4
-; SPIRV: Name [[f_b:[0-9]+]] "f.b"
-; BACK-TO-LLVM: @f.b = internal addrspace(2) constant float 1.000000e+00, align 4
-
-; SPIRV-DAG: Name [[foo:[0-9]+]] "foo"
-; SPIRV-DAG: Name [[f:[0-9]+]] "f"
-; SPIRV-DAG: Name [[g:[0-9]+]] "g"
-; SPIRV-DAG: Name [[inline_fun:[0-9]+]] "inline_fun"
-
-; SPIRV-DAG: Decorate [[ae]] LinkageAttributes "ae" Import
-; SPIRV-DAG: Decorate [[e]] LinkageAttributes "e" Import
-; SPIRV-DAG: Decorate [[f]] LinkageAttributes "f" Export
-; SPIRV-DAG: Decorate [[w]] LinkageAttributes "w" Export
-; SPIRV-DAG: Decorate [[i1]] LinkageAttributes "i1" Export
-; SPIRV-DAG: Decorate [[i3]] LinkageAttributes "i3" Export
-; SPIRV-DAG: Decorate [[i4]] LinkageAttributes "i4" Export
-; SPIRV-DAG: Decorate [[foo]] LinkageAttributes "foo" Import
-; SPIRV-DAG: Decorate [[inline_fun]] LinkageAttributes "inline_fun" Export
-; SPIRV-DAG: Decorate [[color_table]] LinkageAttributes "color_table" Export
-; SPIRV-DAG: Decorate [[noise_table]] LinkageAttributes "noise_table" Import
-
-; SPIRV: Function {{[0-9]+}} [[foo]]
-; BACK-TO-LLVM: declare spir_func void @foo()
-declare spir_func void @foo() #2
-
-; SPIRV: Function {{[0-9]+}} [[f]]
-; BACK-TO-LLVM: define spir_func void @f()
-; Function Attrs: nounwind
-define spir_func void @f() #0 {
-entry:
- %q = alloca i32, align 4
- %r = alloca i32, align 4
- %0 = load i32, i32 addrspace(1)* @i2, align 4
- store i32 %0, i32* %q, align 4
- %1 = load i32, i32 addrspace(1)* @i3, align 4
- store i32 %1, i32 addrspace(1)* @i5, align 4
- %2 = load i32, i32 addrspace(1)* @e, align 4
- store i32 %2, i32* %r, align 4
- %3 = load i32, i32 addrspace(2)* getelementptr inbounds ([256 x i32], [256 x i32] addrspace(2)* @noise_table, i32 0, i32 0), align 4
- store i32 %3, i32* %r, align 4
- %4 = load i32, i32 addrspace(2)* getelementptr inbounds ([2 x i32], [2 x i32] addrspace(2)* @f.color_table, i32 0, i32 0), align 4
- store i32 %4, i32* %r, align 4
- %call = call spir_func i32 @g()
- call spir_func void @inline_fun()
- ret void
-}
-
-; SPIRV: Function {{[0-9]+}} [[g]]
-; BACK-TO-LLVM: define internal spir_func i32 @g()
-; Function Attrs: nounwind
-define internal spir_func i32 @g() #0 {
-entry:
- call spir_func void @foo()
- ret i32 25
-}
-
-; SPIRV: Function {{[0-9]+}} [[inline_fun]]
-; BACK-TO-LLVM: define spir_func void @inline_fun()
-; "linkonce_odr" is lost in translation !
-; Function Attrs: inlinehint nounwind
-define linkonce_odr spir_func void @inline_fun() #1 {
-entry:
- %t = alloca i32 addrspace(1)*, align 4
- store i32 addrspace(1)* @i1, i32 addrspace(1)** %t, align 4
- ret void
-}
-
-; SPIRV: Function {{[0-9]+}} [[kern]]
-; BACK-TO-LLVM: define spir_kernel void @kern()
-; Function Attrs: nounwind
-define spir_kernel void @kern() #0 {
-entry:
- call spir_func void @f()
- ret void
-}
-
-attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { inlinehint nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #2 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-
-!opencl.kernels = !{!0}
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!6}
-!opencl.ocl.version = !{!7}
-!opencl.used.extensions = !{!8}
-!opencl.used.optional.core.features = !{!8}
-!opencl.compiler.options = !{!8}
-
-!0 = !{void ()* @kern, !1, !2, !3, !4, !5}
-!1 = !{!"kernel_arg_addr_space"}
-!2 = !{!"kernel_arg_access_qual"}
-!3 = !{!"kernel_arg_type"}
-!4 = !{!"kernel_arg_base_type"}
-!5 = !{!"kernel_arg_type_qual"}
-!6 = !{i32 1, i32 2}
-!7 = !{i32 2, i32 0}
-!8 = !{}
+; RUN: llvm-as < %s > %t.bc
+; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
+; RUN: FileCheck < %t.txt %s --check-prefix=SPIRV
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
+; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=BACK-TO-LLVM
+
+; ModuleID = 'c:/work/tmp/testLink.c'
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+; SPIRV: Capability Linkage
+; SPIRV: EntryPoint 6 [[kern:[0-9]+]] "kern"
+
+@ae = available_externally addrspace(1) global i32 79, align 4
+; SPIRV: Name [[ae:[0-9]+]] "ae"
+; BACK-TO-LLVM: @ae = available_externally addrspace(1) global i32 79, align 4
+
+@i1 = addrspace(1) global i32 1, align 4
+; SPIRV: Name [[i1:[0-9]+]] "i1"
+; BACK-TO-LLVM: @i1 = addrspace(1) global i32 1, align 4
+
+@i2 = internal addrspace(1) global i32 2, align 4
+; SPIRV: Name [[i2:[0-9]+]] "i2"
+; BACK-TO-LLVM: @i2 = internal addrspace(1) global i32 2, align 4
+
+@i3 = addrspace(1) global i32 3, align 4
+; SPIRV: Name [[i3:[0-9]+]] "i3"
+; BACK-TO-LLVM: @i3 = addrspace(1) global i32 3, align 4
+
+@i4 = common addrspace(1) global i32 0, align 4
+; SPIRV: Name [[i4:[0-9]+]] "i4"
+; BACK-TO-LLVM: @i4 = common addrspace(1) global i32 0, align 4
+
+@i5 = internal addrspace(1) global i32 0, align 4
+; SPIRV: Name [[i5:[0-9]+]] "i5"
+; BACK-TO-LLVM: @i5 = internal addrspace(1) global i32 0, align 4
+
+@color_table = addrspace(2) constant [2 x i32] [i32 0, i32 1], align 4
+; SPIRV: Name [[color_table:[0-9]+]] "color_table"
+; BACK-TO-LLVM: @color_table = addrspace(2) constant [2 x i32] [i32 0, i32 1], align 4
+
+@noise_table = external addrspace(2) constant [256 x i32]
+; SPIRV: Name [[noise_table:[0-9]+]] "noise_table"
+; BACK-TO-LLVM: @noise_table = external addrspace(2) constant [256 x i32]
+
+@w = addrspace(1) constant i32 0, align 4
+; SPIRV: Name [[w:[0-9]+]] "w"
+; BACK-TO-LLVM: @w = addrspace(1) constant i32 0, align 4
+
+@f.color_table = internal addrspace(2) constant [2 x i32] [i32 2, i32 3], align 4
+; SPIRV: Name [[f_color_table:[0-9]+]] "f.color_table"
+; BACK-TO-LLVM: @f.color_table = internal addrspace(2) constant [2 x i32] [i32 2, i32 3], align 4
+
+@e = external addrspace(1) global i32
+; SPIRV: Name [[e:[0-9]+]] "e"
+; BACK-TO-LLVM: @e = external addrspace(1) global i32
+
+@f.t = internal addrspace(1) global i32 5, align 4
+; SPIRV: Name [[f_t:[0-9]+]] "f.t"
+; BACK-TO-LLVM: @f.t = internal addrspace(1) global i32 5, align 4
+
+@f.stint = internal addrspace(1) global i32 0, align 4
+; SPIRV: Name [[f_stint:[0-9]+]] "f.stint"
+; BACK-TO-LLVM: @f.stint = internal addrspace(1) global i32 0, align 4
+
+@f.inside = internal addrspace(1) global i32 0, align 4
+; SPIRV: Name [[f_inside:[0-9]+]] "f.inside"
+; BACK-TO-LLVM: @f.inside = internal addrspace(1) global i32 0, align 4
+
+@f.b = internal addrspace(2) constant float 1.000000e+00, align 4
+; SPIRV: Name [[f_b:[0-9]+]] "f.b"
+; BACK-TO-LLVM: @f.b = internal addrspace(2) constant float 1.000000e+00, align 4
+
+; SPIRV-DAG: Name [[foo:[0-9]+]] "foo"
+; SPIRV-DAG: Name [[f:[0-9]+]] "f"
+; SPIRV-DAG: Name [[g:[0-9]+]] "g"
+; SPIRV-DAG: Name [[inline_fun:[0-9]+]] "inline_fun"
+
+; SPIRV-DAG: Decorate [[ae]] LinkageAttributes "ae" Import
+; SPIRV-DAG: Decorate [[e]] LinkageAttributes "e" Import
+; SPIRV-DAG: Decorate [[f]] LinkageAttributes "f" Export
+; SPIRV-DAG: Decorate [[w]] LinkageAttributes "w" Export
+; SPIRV-DAG: Decorate [[i1]] LinkageAttributes "i1" Export
+; SPIRV-DAG: Decorate [[i3]] LinkageAttributes "i3" Export
+; SPIRV-DAG: Decorate [[i4]] LinkageAttributes "i4" Export
+; SPIRV-DAG: Decorate [[foo]] LinkageAttributes "foo" Import
+; SPIRV-DAG: Decorate [[inline_fun]] LinkageAttributes "inline_fun" Export
+; SPIRV-DAG: Decorate [[color_table]] LinkageAttributes "color_table" Export
+; SPIRV-DAG: Decorate [[noise_table]] LinkageAttributes "noise_table" Import
+
+; SPIRV: Function {{[0-9]+}} [[foo]]
+; BACK-TO-LLVM: declare spir_func void @foo()
+declare spir_func void @foo() #2
+
+; SPIRV: Function {{[0-9]+}} [[f]]
+; BACK-TO-LLVM: define spir_func void @f()
+; Function Attrs: nounwind
+define spir_func void @f() #0 {
+entry:
+ %q = alloca i32, align 4
+ %r = alloca i32, align 4
+ %0 = load i32, i32 addrspace(1)* @i2, align 4
+ store i32 %0, i32* %q, align 4
+ %1 = load i32, i32 addrspace(1)* @i3, align 4
+ store i32 %1, i32 addrspace(1)* @i5, align 4
+ %2 = load i32, i32 addrspace(1)* @e, align 4
+ store i32 %2, i32* %r, align 4
+ %3 = load i32, i32 addrspace(2)* getelementptr inbounds ([256 x i32], [256 x i32] addrspace(2)* @noise_table, i32 0, i32 0), align 4
+ store i32 %3, i32* %r, align 4
+ %4 = load i32, i32 addrspace(2)* getelementptr inbounds ([2 x i32], [2 x i32] addrspace(2)* @f.color_table, i32 0, i32 0), align 4
+ store i32 %4, i32* %r, align 4
+ %call = call spir_func i32 @g()
+ call spir_func void @inline_fun()
+ ret void
+}
+
+; SPIRV: Function {{[0-9]+}} [[g]]
+; BACK-TO-LLVM: define internal spir_func i32 @g()
+; Function Attrs: nounwind
+define internal spir_func i32 @g() #0 {
+entry:
+ call spir_func void @foo()
+ ret i32 25
+}
+
+; SPIRV: Function {{[0-9]+}} [[inline_fun]]
+; BACK-TO-LLVM: define spir_func void @inline_fun()
+; "linkonce_odr" is lost in translation !
+; Function Attrs: inlinehint nounwind
+define linkonce_odr spir_func void @inline_fun() #1 {
+entry:
+ %t = alloca i32 addrspace(1)*, align 4
+ store i32 addrspace(1)* @i1, i32 addrspace(1)** %t, align 4
+ ret void
+}
+
+; SPIRV: Function {{[0-9]+}} [[kern]]
+; BACK-TO-LLVM: define spir_kernel void @kern()
+; Function Attrs: nounwind
+define spir_kernel void @kern() #0 {
+entry:
+ call spir_func void @f()
+ ret void
+}
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { inlinehint nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #2 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!opencl.kernels = !{!0}
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!6}
+!opencl.ocl.version = !{!7}
+!opencl.used.extensions = !{!8}
+!opencl.used.optional.core.features = !{!8}
+!opencl.compiler.options = !{!8}
+
+!0 = !{void ()* @kern, !1, !2, !3, !4, !5}
+!1 = !{!"kernel_arg_addr_space"}
+!2 = !{!"kernel_arg_access_qual"}
+!3 = !{!"kernel_arg_type"}
+!4 = !{!"kernel_arg_base_type"}
+!5 = !{!"kernel_arg_type_qual"}
+!6 = !{i32 1, i32 2}
+!7 = !{i32 2, i32 0}
+!8 = !{}
diff --git a/test/SPIRV/simple.ll b/test/SPIRV/simple.ll
index ff4d26b3..153ff2c8 100644
--- a/test/SPIRV/simple.ll
+++ b/test/SPIRV/simple.ll
@@ -1,158 +1,158 @@
-; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
-; RUN: FileCheck < %t %s
-target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir64-unknown-unknown"
-
-; Support of doubles is required.
-; CHECK: Capability Float64
-; CHECK: "fun01"
-; Function Attrs: nounwind
-define spir_kernel void @fun01(i32 addrspace(1)* noalias %a, i32 addrspace(1)* %b, i32 %c) #0 {
-entry:
- %a.addr = alloca i32 addrspace(1)*, align 8
- %b.addr = alloca i32 addrspace(1)*, align 8
- %c.addr = alloca i32, align 4
- store i32 addrspace(1)* %a, i32 addrspace(1)** %a.addr, align 8
- store i32 addrspace(1)* %b, i32 addrspace(1)** %b.addr, align 8
- store i32 %c, i32* %c.addr, align 4
- %0 = load i32 addrspace(1)*, i32 addrspace(1)** %b.addr, align 8
- %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %0, i64 0
- %1 = load i32, i32 addrspace(1)* %arrayidx, align 4
- %2 = load i32 addrspace(1)*, i32 addrspace(1)** %a.addr, align 8
- %arrayidx1 = getelementptr inbounds i32, i32 addrspace(1)* %2, i64 0
- store i32 %1, i32 addrspace(1)* %arrayidx1, align 4
- %3 = load i32 addrspace(1)*, i32 addrspace(1)** %b.addr, align 8
- %cmp = icmp ugt i32 addrspace(1)* %3, null
- br i1 %cmp, label %if.then, label %if.end
-
-if.then: ; preds = %entry
- %4 = load i32 addrspace(1)*, i32 addrspace(1)** %a.addr, align 8
- %arrayidx2 = getelementptr inbounds i32, i32 addrspace(1)* %4, i64 0
- store i32 2, i32 addrspace(1)* %arrayidx2, align 4
- br label %if.end
-
-if.end: ; preds = %if.then, %entry
- ret void
-}
-
-; CHECK: "fun02"
-; Function Attrs: nounwind
-define spir_kernel void @fun02(double addrspace(1)* %a, double addrspace(1)* %b, i32 %c) #0 {
-entry:
- %a.addr = alloca double addrspace(1)*, align 8
- %b.addr = alloca double addrspace(1)*, align 8
- %c.addr = alloca i32, align 4
- store double addrspace(1)* %a, double addrspace(1)** %a.addr, align 8
- store double addrspace(1)* %b, double addrspace(1)** %b.addr, align 8
- store i32 %c, i32* %c.addr, align 4
- %0 = load i32, i32* %c.addr, align 4
- %idxprom = sext i32 %0 to i64
- %1 = load double addrspace(1)*, double addrspace(1)** %b.addr, align 8
- %arrayidx = getelementptr inbounds double, double addrspace(1)* %1, i64 %idxprom
- %2 = load double, double addrspace(1)* %arrayidx, align 8
- %3 = load i32, i32* %c.addr, align 4
- %idxprom1 = sext i32 %3 to i64
- %4 = load double addrspace(1)*, double addrspace(1)** %a.addr, align 8
- %arrayidx2 = getelementptr inbounds double, double addrspace(1)* %4, i64 %idxprom1
- store double %2, double addrspace(1)* %arrayidx2, align 8
- ret void
-}
-
-; CHECK: "test_builtin"
-; Function Attrs: nounwind
-define spir_func void @test_builtin(i32 addrspace(1)* %in, i32 addrspace(1)* %out) #0 {
-entry:
- %in.addr = alloca i32 addrspace(1)*, align 8
- %out.addr = alloca i32 addrspace(1)*, align 8
- %n = alloca i32, align 4
- store i32 addrspace(1)* %in, i32 addrspace(1)** %in.addr, align 8
- store i32 addrspace(1)* %out, i32 addrspace(1)** %out.addr, align 8
- %call = call spir_func i64 @_Z13get_global_idj(i32 0) #2
- %conv = trunc i64 %call to i32
- store i32 %conv, i32* %n, align 4
- %0 = load i32, i32* %n, align 4
- %idxprom = sext i32 %0 to i64
- %1 = load i32 addrspace(1)*, i32 addrspace(1)** %in.addr, align 8
- %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %1, i64 %idxprom
- %2 = load i32, i32 addrspace(1)* %arrayidx, align 4
- %call1 = call spir_func i32 @_Z3absi(i32 %2) #2
- %3 = load i32, i32* %n, align 4
- %idxprom2 = sext i32 %3 to i64
- %4 = load i32 addrspace(1)*, i32 addrspace(1)** %out.addr, align 8
- %arrayidx3 = getelementptr inbounds i32, i32 addrspace(1)* %4, i64 %idxprom2
- store i32 %call1, i32 addrspace(1)* %arrayidx3, align 4
- ret void
-}
-
-; CHECK-NOT: "_Z13get_global_idj"
-; Function Attrs: nounwind readnone
-declare spir_func i64 @_Z13get_global_idj(i32) #1
-
-; CHECK-NOT: "_Z3absi"
-; Function Attrs: nounwind readnone
-declare spir_func i32 @_Z3absi(i32) #1
-
-; CHECK: "myabs"
-; Function Attrs: nounwind
-define spir_func i32 @myabs(i32 %x) #0 {
-entry:
- %x.addr = alloca i32, align 4
- store i32 %x, i32* %x.addr, align 4
- %0 = load i32, i32* %x.addr, align 4
- %call = call spir_func i32 @_Z3absi(i32 %0) #2
- ret i32 %call
-}
-
-; CHECK: "test_function_call"
-; Function Attrs: nounwind
-define spir_func void @test_function_call(i32 addrspace(1)* %in, i32 addrspace(1)* %out) #0 {
-entry:
- %in.addr = alloca i32 addrspace(1)*, align 8
- %out.addr = alloca i32 addrspace(1)*, align 8
- %n = alloca i32, align 4
- store i32 addrspace(1)* %in, i32 addrspace(1)** %in.addr, align 8
- store i32 addrspace(1)* %out, i32 addrspace(1)** %out.addr, align 8
- %call = call spir_func i64 @_Z13get_global_idj(i32 0) #2
- %conv = trunc i64 %call to i32
- store i32 %conv, i32* %n, align 4
- %0 = load i32, i32* %n, align 4
- %idxprom = sext i32 %0 to i64
- %1 = load i32 addrspace(1)*, i32 addrspace(1)** %in.addr, align 8
- %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %1, i64 %idxprom
- %2 = load i32, i32 addrspace(1)* %arrayidx, align 4
- %call1 = call spir_func i32 @myabs(i32 %2)
- %3 = load i32, i32* %n, align 4
- %idxprom2 = sext i32 %3 to i64
- %4 = load i32 addrspace(1)*, i32 addrspace(1)** %out.addr, align 8
- %arrayidx3 = getelementptr inbounds i32, i32 addrspace(1)* %4, i64 %idxprom2
- store i32 %call1, i32 addrspace(1)* %arrayidx3, align 4
- ret void
-}
-
-attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #1 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-attributes #2 = { nounwind readnone }
-
-!opencl.kernels = !{!0, !7}
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!12}
-!opencl.ocl.version = !{!12}
-!opencl.used.extensions = !{!13}
-!opencl.used.optional.core.features = !{!14}
-!opencl.compiler.options = !{!13}
-
-!0 = !{void (i32 addrspace(1)*, i32 addrspace(1)*, i32)* @fun01, !1, !2, !3, !4, !5, !6}
-!1 = !{!"kernel_arg_addr_space", i32 1, i32 1, i32 0}
-!2 = !{!"kernel_arg_access_qual", !"none", !"none", !"none"}
-!3 = !{!"kernel_arg_type", !"int*", !"int*", !"int"}
-!4 = !{!"kernel_arg_base_type", !"int*", !"int*", !"int"}
-!5 = !{!"kernel_arg_type_qual", !"restrict", !"const", !""}
-!6 = !{!"reqd_work_group_size", i32 1, i32 2, i32 3}
-!7 = !{void (double addrspace(1)*, double addrspace(1)*, i32)* @fun02, !1, !2, !8, !9, !10, !11}
-!8 = !{!"kernel_arg_type", !"double*", !"double*", !"int"}
-!9 = !{!"kernel_arg_base_type", !"double*", !"double*", !"int"}
-!10 = !{!"kernel_arg_type_qual", !"", !"", !""}
-!11 = !{!"vec_type_hint", double undef, i32 1}
-!12 = !{i32 1, i32 2}
-!13 = !{}
-!14 = !{!"cl_doubles"}
+; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t
+; RUN: FileCheck < %t %s
+target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir64-unknown-unknown"
+
+; Support of doubles is required.
+; CHECK: Capability Float64
+; CHECK: "fun01"
+; Function Attrs: nounwind
+define spir_kernel void @fun01(i32 addrspace(1)* noalias %a, i32 addrspace(1)* %b, i32 %c) #0 {
+entry:
+ %a.addr = alloca i32 addrspace(1)*, align 8
+ %b.addr = alloca i32 addrspace(1)*, align 8
+ %c.addr = alloca i32, align 4
+ store i32 addrspace(1)* %a, i32 addrspace(1)** %a.addr, align 8
+ store i32 addrspace(1)* %b, i32 addrspace(1)** %b.addr, align 8
+ store i32 %c, i32* %c.addr, align 4
+ %0 = load i32 addrspace(1)*, i32 addrspace(1)** %b.addr, align 8
+ %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %0, i64 0
+ %1 = load i32, i32 addrspace(1)* %arrayidx, align 4
+ %2 = load i32 addrspace(1)*, i32 addrspace(1)** %a.addr, align 8
+ %arrayidx1 = getelementptr inbounds i32, i32 addrspace(1)* %2, i64 0
+ store i32 %1, i32 addrspace(1)* %arrayidx1, align 4
+ %3 = load i32 addrspace(1)*, i32 addrspace(1)** %b.addr, align 8
+ %cmp = icmp ugt i32 addrspace(1)* %3, null
+ br i1 %cmp, label %if.then, label %if.end
+
+if.then: ; preds = %entry
+ %4 = load i32 addrspace(1)*, i32 addrspace(1)** %a.addr, align 8
+ %arrayidx2 = getelementptr inbounds i32, i32 addrspace(1)* %4, i64 0
+ store i32 2, i32 addrspace(1)* %arrayidx2, align 4
+ br label %if.end
+
+if.end: ; preds = %if.then, %entry
+ ret void
+}
+
+; CHECK: "fun02"
+; Function Attrs: nounwind
+define spir_kernel void @fun02(double addrspace(1)* %a, double addrspace(1)* %b, i32 %c) #0 {
+entry:
+ %a.addr = alloca double addrspace(1)*, align 8
+ %b.addr = alloca double addrspace(1)*, align 8
+ %c.addr = alloca i32, align 4
+ store double addrspace(1)* %a, double addrspace(1)** %a.addr, align 8
+ store double addrspace(1)* %b, double addrspace(1)** %b.addr, align 8
+ store i32 %c, i32* %c.addr, align 4
+ %0 = load i32, i32* %c.addr, align 4
+ %idxprom = sext i32 %0 to i64
+ %1 = load double addrspace(1)*, double addrspace(1)** %b.addr, align 8
+ %arrayidx = getelementptr inbounds double, double addrspace(1)* %1, i64 %idxprom
+ %2 = load double, double addrspace(1)* %arrayidx, align 8
+ %3 = load i32, i32* %c.addr, align 4
+ %idxprom1 = sext i32 %3 to i64
+ %4 = load double addrspace(1)*, double addrspace(1)** %a.addr, align 8
+ %arrayidx2 = getelementptr inbounds double, double addrspace(1)* %4, i64 %idxprom1
+ store double %2, double addrspace(1)* %arrayidx2, align 8
+ ret void
+}
+
+; CHECK: "test_builtin"
+; Function Attrs: nounwind
+define spir_func void @test_builtin(i32 addrspace(1)* %in, i32 addrspace(1)* %out) #0 {
+entry:
+ %in.addr = alloca i32 addrspace(1)*, align 8
+ %out.addr = alloca i32 addrspace(1)*, align 8
+ %n = alloca i32, align 4
+ store i32 addrspace(1)* %in, i32 addrspace(1)** %in.addr, align 8
+ store i32 addrspace(1)* %out, i32 addrspace(1)** %out.addr, align 8
+ %call = call spir_func i64 @_Z13get_global_idj(i32 0) #2
+ %conv = trunc i64 %call to i32
+ store i32 %conv, i32* %n, align 4
+ %0 = load i32, i32* %n, align 4
+ %idxprom = sext i32 %0 to i64
+ %1 = load i32 addrspace(1)*, i32 addrspace(1)** %in.addr, align 8
+ %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %1, i64 %idxprom
+ %2 = load i32, i32 addrspace(1)* %arrayidx, align 4
+ %call1 = call spir_func i32 @_Z3absi(i32 %2) #2
+ %3 = load i32, i32* %n, align 4
+ %idxprom2 = sext i32 %3 to i64
+ %4 = load i32 addrspace(1)*, i32 addrspace(1)** %out.addr, align 8
+ %arrayidx3 = getelementptr inbounds i32, i32 addrspace(1)* %4, i64 %idxprom2
+ store i32 %call1, i32 addrspace(1)* %arrayidx3, align 4
+ ret void
+}
+
+; CHECK-NOT: "_Z13get_global_idj"
+; Function Attrs: nounwind readnone
+declare spir_func i64 @_Z13get_global_idj(i32) #1
+
+; CHECK-NOT: "_Z3absi"
+; Function Attrs: nounwind readnone
+declare spir_func i32 @_Z3absi(i32) #1
+
+; CHECK: "myabs"
+; Function Attrs: nounwind
+define spir_func i32 @myabs(i32 %x) #0 {
+entry:
+ %x.addr = alloca i32, align 4
+ store i32 %x, i32* %x.addr, align 4
+ %0 = load i32, i32* %x.addr, align 4
+ %call = call spir_func i32 @_Z3absi(i32 %0) #2
+ ret i32 %call
+}
+
+; CHECK: "test_function_call"
+; Function Attrs: nounwind
+define spir_func void @test_function_call(i32 addrspace(1)* %in, i32 addrspace(1)* %out) #0 {
+entry:
+ %in.addr = alloca i32 addrspace(1)*, align 8
+ %out.addr = alloca i32 addrspace(1)*, align 8
+ %n = alloca i32, align 4
+ store i32 addrspace(1)* %in, i32 addrspace(1)** %in.addr, align 8
+ store i32 addrspace(1)* %out, i32 addrspace(1)** %out.addr, align 8
+ %call = call spir_func i64 @_Z13get_global_idj(i32 0) #2
+ %conv = trunc i64 %call to i32
+ store i32 %conv, i32* %n, align 4
+ %0 = load i32, i32* %n, align 4
+ %idxprom = sext i32 %0 to i64
+ %1 = load i32 addrspace(1)*, i32 addrspace(1)** %in.addr, align 8
+ %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %1, i64 %idxprom
+ %2 = load i32, i32 addrspace(1)* %arrayidx, align 4
+ %call1 = call spir_func i32 @myabs(i32 %2)
+ %3 = load i32, i32* %n, align 4
+ %idxprom2 = sext i32 %3 to i64
+ %4 = load i32 addrspace(1)*, i32 addrspace(1)** %out.addr, align 8
+ %arrayidx3 = getelementptr inbounds i32, i32 addrspace(1)* %4, i64 %idxprom2
+ store i32 %call1, i32 addrspace(1)* %arrayidx3, align 4
+ ret void
+}
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #1 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+attributes #2 = { nounwind readnone }
+
+!opencl.kernels = !{!0, !7}
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!12}
+!opencl.ocl.version = !{!12}
+!opencl.used.extensions = !{!13}
+!opencl.used.optional.core.features = !{!14}
+!opencl.compiler.options = !{!13}
+
+!0 = !{void (i32 addrspace(1)*, i32 addrspace(1)*, i32)* @fun01, !1, !2, !3, !4, !5, !6}
+!1 = !{!"kernel_arg_addr_space", i32 1, i32 1, i32 0}
+!2 = !{!"kernel_arg_access_qual", !"none", !"none", !"none"}
+!3 = !{!"kernel_arg_type", !"int*", !"int*", !"int"}
+!4 = !{!"kernel_arg_base_type", !"int*", !"int*", !"int"}
+!5 = !{!"kernel_arg_type_qual", !"restrict", !"const", !""}
+!6 = !{!"reqd_work_group_size", i32 1, i32 2, i32 3}
+!7 = !{void (double addrspace(1)*, double addrspace(1)*, i32)* @fun02, !1, !2, !8, !9, !10, !11}
+!8 = !{!"kernel_arg_type", !"double*", !"double*", !"int"}
+!9 = !{!"kernel_arg_base_type", !"double*", !"double*", !"int"}
+!10 = !{!"kernel_arg_type_qual", !"", !"", !""}
+!11 = !{!"vec_type_hint", double undef, i32 1}
+!12 = !{i32 1, i32 2}
+!13 = !{}
+!14 = !{!"cl_doubles"}
diff --git a/test/SPIRV/transcoding/DecorationMaxByteOffset.ll b/test/SPIRV/transcoding/DecorationMaxByteOffset.ll
index a9caba5b..dabccfb5 100644
--- a/test/SPIRV/transcoding/DecorationMaxByteOffset.ll
+++ b/test/SPIRV/transcoding/DecorationMaxByteOffset.ll
@@ -1,53 +1,53 @@
-; RUN: llvm-as %s -o %t.bc
-; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
-; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
-; RUN: llvm-spirv %t.bc -o %t.spv
-; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
-; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
-
-; CHECK-LLVM: define spir_kernel void @worker(i8 addrspace(3)* dereferenceable(12) %ptr)
-; CHECK-LLVM: define spir_func void @not_a_kernel(i8 addrspace(3)* dereferenceable(123) %ptr2)
-
-; CHECK-SPIRV: 3 Name [[PTR_ID:[0-9]+]] "ptr"
-; CHECK-SPIRV: 4 Name [[PTR2_ID:[0-9]+]] "ptr2"
-; CHECK-SPIRV: 4 Decorate [[PTR_ID]] MaxByteOffset 12
-; CHECK-SPIRV: 4 Decorate [[PTR2_ID]] MaxByteOffset 123
-; CHECK-SPIRV: 4 TypeInt [[CHAR_T:[0-9]+]] 8 0
-; CHECK-SPIRV: 4 TypePointer [[CHAR_PTR_T:[0-9]+]] 4 [[CHAR_T]]
-; CHECK-SPIRV: 3 FunctionParameter [[CHAR_PTR_T]] [[PTR_ID]]
-; CHECK-SPIRV: 3 FunctionParameter [[CHAR_PTR_T]] [[PTR2_ID]]
-
-target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir-unknown-unknown"
-
-; Function Attrs: nounwind
-define spir_kernel void @worker(i8 addrspace(3)* dereferenceable(12) %ptr) #0 {
-entry:
- %ptr.addr = alloca i8 addrspace(3)*, align 4
- store i8 addrspace(3)* %ptr, i8 addrspace(3)** %ptr.addr, align 4
- ret void
-}
-
-; Function Attrs: nounwind
-define spir_func void @not_a_kernel(i8 addrspace(3)* dereferenceable(123) %ptr2) #0 {
-entry:
- ret void
-}
-
-attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
-
-!opencl.enable.FP_CONTRACT = !{}
-!opencl.spir.version = !{!0}
-!opencl.ocl.version = !{!1}
-!opencl.used.extensions = !{!2}
-!opencl.used.optional.core.features = !{!2}
-!opencl.compiler.options = !{!2}
-!llvm.ident = !{!3}
-!spirv.Source = !{!4}
-!spirv.String = !{}
-
-!0 = !{i32 1, i32 2}
-!1 = !{i32 2, i32 2}
-!2 = !{}
-!3 = !{!"clang version 3.6.1 "}
-!4 = !{i32 4, i32 202000}
+; RUN: llvm-as %s -o %t.bc
+; RUN: llvm-spirv %t.bc -spirv-text -o %t.txt
+; RUN: FileCheck < %t.txt %s --check-prefix=CHECK-SPIRV
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
+; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+
+; CHECK-LLVM: define spir_kernel void @worker(i8 addrspace(3)* dereferenceable(12) %ptr)
+; CHECK-LLVM: define spir_func void @not_a_kernel(i8 addrspace(3)* dereferenceable(123) %ptr2)
+
+; CHECK-SPIRV: 3 Name [[PTR_ID:[0-9]+]] "ptr"
+; CHECK-SPIRV: 4 Name [[PTR2_ID:[0-9]+]] "ptr2"
+; CHECK-SPIRV: 4 Decorate [[PTR_ID]] MaxByteOffset 12
+; CHECK-SPIRV: 4 Decorate [[PTR2_ID]] MaxByteOffset 123
+; CHECK-SPIRV: 4 TypeInt [[CHAR_T:[0-9]+]] 8 0
+; CHECK-SPIRV: 4 TypePointer [[CHAR_PTR_T:[0-9]+]] 4 [[CHAR_T]]
+; CHECK-SPIRV: 3 FunctionParameter [[CHAR_PTR_T]] [[PTR_ID]]
+; CHECK-SPIRV: 3 FunctionParameter [[CHAR_PTR_T]] [[PTR2_ID]]
+
+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir-unknown-unknown"
+
+; Function Attrs: nounwind
+define spir_kernel void @worker(i8 addrspace(3)* dereferenceable(12) %ptr) #0 {
+entry:
+ %ptr.addr = alloca i8 addrspace(3)*, align 4
+ store i8 addrspace(3)* %ptr, i8 addrspace(3)** %ptr.addr, align 4
+ ret void
+}
+
+; Function Attrs: nounwind
+define spir_func void @not_a_kernel(i8 addrspace(3)* dereferenceable(123) %ptr2) #0 {
+entry:
+ ret void
+}
+
+attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
+
+!opencl.enable.FP_CONTRACT = !{}
+!opencl.spir.version = !{!0}
+!opencl.ocl.version = !{!1}
+!opencl.used.extensions = !{!2}
+!opencl.used.optional.core.features = !{!2}
+!opencl.compiler.options = !{!2}
+!llvm.ident = !{!3}
+!spirv.Source = !{!4}
+!spirv.String = !{}
+
+!0 = !{i32 1, i32 2}
+!1 = !{i32 2, i32 2}
+!2 = !{}
+!3 = !{!"clang version 3.6.1 "}
+!4 = !{i32 4, i32 202000}
diff --git a/test/SPIRV/transcoding/check_ro_qualifier.ll b/test/SPIRV/transcoding/check_ro_qualifier.ll
index 8096e8c8..24a66976 100644
--- a/test/SPIRV/transcoding/check_ro_qualifier.ll
+++ b/test/SPIRV/transcoding/check_ro_qualifier.ll
@@ -1,61 +1,61 @@
-; RUN: llvm-as %s -o %t.bc
-; RUN: llvm-spirv %t.bc -o %t.spv
-; RUN: llvm-spirv -r -spirv-gen-image-type-acc-postfix %t.spv -o %t.rev.bc
-; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
-
-; CHECK-LLVM: opencl.image2d_array_ro_t = type opaque
-; CHECK-LLVM: define spir_kernel void @sample_kernel(%opencl.image2d_array_ro_t addrspace(1)
-; CHECK-LLVM: call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
-; CHECK-LLVM: call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
-; CHECK-LLVM: declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
-; CHECK-LLVM: declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
-; CHECK-LLVM: !{{[0-9]+}} = !{void (%opencl.image2d_array_ro_t
-; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_type", !"image2d_array_ro_t"}
-; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_base_type", !"image2d_array_ro_t"}
-
-; ModuleID = 'out.ll'
-target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir64-unknown-unknown"
-
-%opencl.image2d_array_ro_t = type opaque
-
-; Function Attrs: nounwind
-define spir_kernel void @sample_kernel(%opencl.image2d_array_ro_t addrspace(1)* %input) #0 {
-entry:
- %call.tmp1 = call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)* %input)
- %call.tmp2 = shufflevector <2 x i32> %call.tmp1, <2 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
- %call.tmp3 = call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)* %input)
- %call.tmp4 = trunc i64 %call.tmp3 to i32
- %call.tmp5 = insertelement <3 x i32> %call.tmp2, i32 %call.tmp4, i32 2
- %call.old = extractelement <3 x i32> %call.tmp5, i32 0
- ret void
-}
-
-; Function Attrs: nounwind
-declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)*) #0
-
-; Function Attrs: nounwind
-declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)*) #0
-
-attributes #0 = { nounwind }
-
-!opencl.kernels = !{!0}
-!opencl.enable.FP_CONTRACT = !{}
-!spirv.Source = !{!6}
-!opencl.spir.version = !{!7}
-!opencl.ocl.version = !{!7}
-!opencl.used.extensions = !{!8}
-!opencl.used.optional.core.features = !{!9}
-!spirv.Generator = !{!10}
-
-!0 = !{void (%opencl.image2d_array_ro_t addrspace(1)*)* @sample_kernel, !1, !2, !3, !4, !5}
-!1 = !{!"kernel_arg_addr_space", i32 1}
-!2 = !{!"kernel_arg_access_qual", !"read_only"}
-!3 = !{!"kernel_arg_type", !"image2d_array_ro_t"}
-!4 = !{!"kernel_arg_type_qual", !""}
-!5 = !{!"kernel_arg_base_type", !"image2d_array_ro_t"}
-!6 = !{i32 3, i32 102000}
-!7 = !{i32 1, i32 2}
-!8 = !{}
-!9 = !{!"cl_images"}
+; RUN: llvm-as %s -o %t.bc
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r -spirv-gen-image-type-acc-postfix %t.spv -o %t.rev.bc
+; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+
+; CHECK-LLVM: opencl.image2d_array_ro_t = type opaque
+; CHECK-LLVM: define spir_kernel void @sample_kernel(%opencl.image2d_array_ro_t addrspace(1)
+; CHECK-LLVM: call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
+; CHECK-LLVM: call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
+; CHECK-LLVM: declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
+; CHECK-LLVM: declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)
+; CHECK-LLVM: !{{[0-9]+}} = !{void (%opencl.image2d_array_ro_t
+; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_type", !"image2d_array_ro_t"}
+; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_base_type", !"image2d_array_ro_t"}
+
+; ModuleID = 'out.ll'
+target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir64-unknown-unknown"
+
+%opencl.image2d_array_ro_t = type opaque
+
+; Function Attrs: nounwind
+define spir_kernel void @sample_kernel(%opencl.image2d_array_ro_t addrspace(1)* %input) #0 {
+entry:
+ %call.tmp1 = call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)* %input)
+ %call.tmp2 = shufflevector <2 x i32> %call.tmp1, <2 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
+ %call.tmp3 = call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)* %input)
+ %call.tmp4 = trunc i64 %call.tmp3 to i32
+ %call.tmp5 = insertelement <3 x i32> %call.tmp2, i32 %call.tmp4, i32 2
+ %call.old = extractelement <3 x i32> %call.tmp5, i32 0
+ ret void
+}
+
+; Function Attrs: nounwind
+declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)*) #0
+
+; Function Attrs: nounwind
+declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_ro_t(%opencl.image2d_array_ro_t addrspace(1)*) #0
+
+attributes #0 = { nounwind }
+
+!opencl.kernels = !{!0}
+!opencl.enable.FP_CONTRACT = !{}
+!spirv.Source = !{!6}
+!opencl.spir.version = !{!7}
+!opencl.ocl.version = !{!7}
+!opencl.used.extensions = !{!8}
+!opencl.used.optional.core.features = !{!9}
+!spirv.Generator = !{!10}
+
+!0 = !{void (%opencl.image2d_array_ro_t addrspace(1)*)* @sample_kernel, !1, !2, !3, !4, !5}
+!1 = !{!"kernel_arg_addr_space", i32 1}
+!2 = !{!"kernel_arg_access_qual", !"read_only"}
+!3 = !{!"kernel_arg_type", !"image2d_array_ro_t"}
+!4 = !{!"kernel_arg_type_qual", !""}
+!5 = !{!"kernel_arg_base_type", !"image2d_array_ro_t"}
+!6 = !{i32 3, i32 102000}
+!7 = !{i32 1, i32 2}
+!8 = !{}
+!9 = !{!"cl_images"}
!10 = !{i16 6, i16 14} \ No newline at end of file
diff --git a/test/SPIRV/transcoding/check_wo_qualifier.ll b/test/SPIRV/transcoding/check_wo_qualifier.ll
index 1f85d437..58b723f1 100644
--- a/test/SPIRV/transcoding/check_wo_qualifier.ll
+++ b/test/SPIRV/transcoding/check_wo_qualifier.ll
@@ -1,62 +1,62 @@
-; RUN: llvm-as %s -o %t.bc
-; RUN: llvm-spirv %t.bc -o %t.spv
-; RUN: llvm-spirv -r -spirv-gen-image-type-acc-postfix %t.spv -o %t.rev.bc
-; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
-
-; CHECK-LLVM: opencl.image2d_array_wo_t = type opaque
-; CHECK-LLVM: define spir_kernel void @sample_kernel(%opencl.image2d_array_wo_t addrspace(1)
-; CHECK-LLVM: call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
-; CHECK-LLVM: call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
-; CHECK-LLVM: declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
-; CHECK-LLVM: declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
-; CHECK-LLVM: !{{[0-9]+}} = !{void (%opencl.image2d_array_wo_t
-; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_type", !"image2d_array_wo_t"}
-; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_base_type", !"image2d_array_wo_t"}
-
-
-; ModuleID = 'out.ll'
-target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
-target triple = "spir64-unknown-unknown"
-
-%opencl.image2d_array_wo_t = type opaque
-
-; Function Attrs: nounwind
-define spir_kernel void @sample_kernel(%opencl.image2d_array_wo_t addrspace(1)* %input) #0 {
-entry:
- %call.tmp1 = call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)* %input)
- %call.tmp2 = shufflevector <2 x i32> %call.tmp1, <2 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
- %call.tmp3 = call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)* %input)
- %call.tmp4 = trunc i64 %call.tmp3 to i32
- %call.tmp5 = insertelement <3 x i32> %call.tmp2, i32 %call.tmp4, i32 2
- %call.old = extractelement <3 x i32> %call.tmp5, i32 0
- ret void
-}
-
-; Function Attrs: nounwind
-declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)*) #0
-
-; Function Attrs: nounwind
-declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)*) #0
-
-attributes #0 = { nounwind }
-
-!opencl.kernels = !{!0}
-!opencl.enable.FP_CONTRACT = !{}
-!spirv.Source = !{!6}
-!opencl.spir.version = !{!7}
-!opencl.ocl.version = !{!7}
-!opencl.used.extensions = !{!8}
-!opencl.used.optional.core.features = !{!9}
-!spirv.Generator = !{!10}
-
-!0 = !{void (%opencl.image2d_array_wo_t addrspace(1)*)* @sample_kernel, !1, !2, !3, !4, !5}
-!1 = !{!"kernel_arg_addr_space", i32 1}
-!2 = !{!"kernel_arg_access_qual", !"write_only"}
-!3 = !{!"kernel_arg_type", !"image2d_array_wo_t"}
-!4 = !{!"kernel_arg_type_qual", !""}
-!5 = !{!"kernel_arg_base_type", !"image2d_array_wo_t"}
-!6 = !{i32 3, i32 102000}
-!7 = !{i32 1, i32 2}
-!8 = !{}
-!9 = !{!"cl_images"}
+; RUN: llvm-as %s -o %t.bc
+; RUN: llvm-spirv %t.bc -o %t.spv
+; RUN: llvm-spirv -r -spirv-gen-image-type-acc-postfix %t.spv -o %t.rev.bc
+; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
+
+; CHECK-LLVM: opencl.image2d_array_wo_t = type opaque
+; CHECK-LLVM: define spir_kernel void @sample_kernel(%opencl.image2d_array_wo_t addrspace(1)
+; CHECK-LLVM: call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
+; CHECK-LLVM: call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
+; CHECK-LLVM: declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
+; CHECK-LLVM: declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)
+; CHECK-LLVM: !{{[0-9]+}} = !{void (%opencl.image2d_array_wo_t
+; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_type", !"image2d_array_wo_t"}
+; CHECK-LLVM: !{{[0-9]+}} = !{!"kernel_arg_base_type", !"image2d_array_wo_t"}
+
+
+; ModuleID = 'out.ll'
+target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
+target triple = "spir64-unknown-unknown"
+
+%opencl.image2d_array_wo_t = type opaque
+
+; Function Attrs: nounwind
+define spir_kernel void @sample_kernel(%opencl.image2d_array_wo_t addrspace(1)* %input) #0 {
+entry:
+ %call.tmp1 = call spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)* %input)
+ %call.tmp2 = shufflevector <2 x i32> %call.tmp1, <2 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
+ %call.tmp3 = call spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)* %input)
+ %call.tmp4 = trunc i64 %call.tmp3 to i32
+ %call.tmp5 = insertelement <3 x i32> %call.tmp2, i32 %call.tmp4, i32 2
+ %call.old = extractelement <3 x i32> %call.tmp5, i32 0
+ ret void
+}
+
+; Function Attrs: nounwind
+declare spir_func <2 x i32> @_Z13get_image_dimPU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)*) #0
+
+; Function Attrs: nounwind
+declare spir_func i64 @_Z20get_image_array_sizePU3AS125opencl.image2d_array_wo_t(%opencl.image2d_array_wo_t addrspace(1)*) #0
+
+attributes #0 = { nounwind }
+
+!opencl.kernels = !{!0}
+!opencl.enable.FP_CONTRACT = !{}
+!spirv.Source = !{!6}
+!opencl.spir.version = !{!7}
+!opencl.ocl.version = !{!7}
+!opencl.used.extensions = !{!8}
+!opencl.used.optional.core.features = !{!9}
+!spirv.Generator = !{!10}
+
+!0 = !{void (%opencl.image2d_array_wo_t addrspace(1)*)* @sample_kernel, !1, !2, !3, !4, !5}
+!1 = !{!"kernel_arg_addr_space", i32 1}
+!2 = !{!"kernel_arg_access_qual", !"write_only"}
+!3 = !{!"kernel_arg_type", !"image2d_array_wo_t"}
+!4 = !{!"kernel_arg_type_qual", !""}
+!5 = !{!"kernel_arg_base_type", !"image2d_array_wo_t"}
+!6 = !{i32 3, i32 102000}
+!7 = !{i32 1, i32 2}
+!8 = !{}
+!9 = !{!"cl_images"}
!10 = !{i16 6, i16 14} \ No newline at end of file