xref: /llvm-project/llvm/test/CodeGen/SPIRV/transcoding/BitReversePref.ll (revision 0a443f13b49b3f392461a0bb60b0146cfc4607c7)
11268cf64SAndrey Tretyakov; RUN: llc -O0 -mtriple=spirv64-unknown-linux %s -o - | FileCheck %s
2*0a443f13SVyacheslav Levytskyy; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
31268cf64SAndrey Tretyakov
41268cf64SAndrey Tretyakov; CHECK:     OpDecorate %[[#FUNC_NAME:]] LinkageAttributes "_Z10BitReversei"
51268cf64SAndrey Tretyakov; CHECK-NOT: OpBitReverse
61268cf64SAndrey Tretyakov; CHECK:     %[[#]] = OpFunctionCall %[[#]] %[[#FUNC_NAME]]
71268cf64SAndrey Tretyakov
81268cf64SAndrey Tretyakov%"class._ZTSZ4mainE3$_0.anon" = type { i8 }
91268cf64SAndrey Tretyakov
101268cf64SAndrey Tretyakov$_Z10BitReversei = comdat any
111268cf64SAndrey Tretyakov
121268cf64SAndrey Tretyakovdefine dso_local spir_kernel void @_ZTSZ4mainE15kernel_function() {
131268cf64SAndrey Tretyakoventry:
141268cf64SAndrey Tretyakov  %call = call spir_func i32 @_Z10BitReversei(i32 1)
151268cf64SAndrey Tretyakov  ret void
161268cf64SAndrey Tretyakov}
171268cf64SAndrey Tretyakov
181268cf64SAndrey Tretyakovdeclare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture)
191268cf64SAndrey Tretyakov
201268cf64SAndrey Tretyakovdeclare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture)
211268cf64SAndrey Tretyakov
221268cf64SAndrey Tretyakovdefine linkonce_odr dso_local spir_func i32 @_Z10BitReversei(i32 %value) comdat {
231268cf64SAndrey Tretyakoventry:
241268cf64SAndrey Tretyakov  %value.addr = alloca i32, align 4
251268cf64SAndrey Tretyakov  %reversed = alloca i32, align 4
261268cf64SAndrey Tretyakov  store i32 %value, i32* %value.addr, align 4
271268cf64SAndrey Tretyakov  %0 = bitcast i32* %reversed to i8*
281268cf64SAndrey Tretyakov  call void @llvm.lifetime.start.p0i8(i64 4, i8* %0)
291268cf64SAndrey Tretyakov  store i32 0, i32* %reversed, align 4
301268cf64SAndrey Tretyakov  %1 = load i32, i32* %reversed, align 4
311268cf64SAndrey Tretyakov  %2 = bitcast i32* %reversed to i8*
321268cf64SAndrey Tretyakov  call void @llvm.lifetime.end.p0i8(i64 4, i8* %2)
331268cf64SAndrey Tretyakov  ret i32 %1
341268cf64SAndrey Tretyakov}
35