; The goal of the test is to check that collisions between explicit integer constants and ; integer constants added automatically by IR Translator are resolved correctly both for ; 32- and 64-bits platforms. The test is successful if it doesn't crash and generate valid ; SPIR-V code for both 32 and 64 bits targets. ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV64 ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} ; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV32 ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %} ; CHECK-SPIRV64-DAG: %[[#IntTy:]] = OpTypeInt 64 0 ; CHECK-SPIRV32-DAG: %[[#IntTy:]] = OpTypeInt 32 0 ; CHECK-SPIRV-DAG: %[[#Const2:]] = OpConstant %[[#IntTy]] 2 ; CHECK-SPIRV-DAG: %[[#]] = OpSpecConstantOp %[[#]] InBoundsPtrAccessChain %[[#]] %[[#]] %[[#Const2]] ; CHECK-SPIRV: OpFunction @a_var = addrspace(1) global [2 x i8] [i8 1, i8 1] @p_var = addrspace(1) global ptr addrspace(1) getelementptr (i8, ptr addrspace(1) @a_var, i64 2) define spir_func void @foo() { entry: ret void }