/
redgpu
/
clspv
Обзор
Документация
Войти
/
redgpu
/
clspv
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
test/PointerCasts/canonical_pointer.ll
75 строк
4 KB
alan-baker
Replace pointer bitcasts should handle array sources better (#620)
25 авг 2020, 16:18
Не верифицирован
25 авг 2020, 16:18
ad1a12f
Код
Авторство
О чём код?
; RUN: clspv-opt %s -o %t.ll -ReplacePointerBitcast ; RUN: FileCheck %s < %t.ll 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_WorkgroupSize = local_unnamed_addr addrspace(8) global <3 x i32> zeroinitializer define spir_kernel void @foo(float addrspace(1)* nocapture readonly %input, <4 x float> addrspace(1)* nocapture %output) { entry: %in = alloca [4 x [4 x float]], align 16 ; CHECK: [[base:%[a-zA-Z0-9_.]+]] = getelementptr inbounds [4 x [4 x float]], [4 x [4 x float]]* %in, i32 0, i32 0, i32 0 ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 0 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 1 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 2 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 3 ; CHECK: load float, float* [[gep]] %bc0 = bitcast [4 x [4 x float]]* %in to <4 x float>* %ld0 = load <4 x float>, <4 x float>* %bc0 ; CHECK: [[base:%[a-zA-Z0-9_.]+]] = getelementptr inbounds [4 x [4 x float]], [4 x [4 x float]]* %gep1, i32 0, i32 0, i32 0 ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 0 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 1 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 2 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 3 ; CHECK: load float, float* [[gep]] %gep1 = getelementptr [4 x [4 x float]], [4 x [4 x float]]* %in %bc1 = bitcast [4 x [4 x float]]* %gep1 to <4 x float>* %ld1 = load <4 x float>, <4 x float>* %bc1 ; CHECK: [[base:%[a-zA-Z0-9_.]+]] = getelementptr inbounds [4 x [4 x float]], [4 x [4 x float]]* %gep2, i32 0, i32 0, i32 0 ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 0 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 1 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 2 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 3 ; CHECK: load float, float* [[gep]] %gep2 = getelementptr [4 x [4 x float]], [4 x [4 x float]]* %in, i32 0 %bc2 = bitcast [4 x [4 x float]]* %gep2 to <4 x float>* %ld2 = load <4 x float>, <4 x float>* %bc2 ; CHECK: [[base:%[a-zA-Z0-9_.]+]] = getelementptr inbounds [4 x float], [4 x float]* %gep3, i32 0, i32 0 ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 0 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 1 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 2 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* [[base]], i32 3 ; CHECK: load float, float* [[gep]] %gep3 = getelementptr [4 x [4 x float]], [4 x [4 x float]]* %in, i32 0, i32 0 %bc3 = bitcast [4 x float]* %gep3 to <4 x float>* %ld3 = load <4 x float>, <4 x float>* %bc3 ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* %gep4, i32 0 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* %gep4, i32 1 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* %gep4, i32 2 ; CHECK: load float, float* [[gep]] ; CHECK: [[gep:%[a-zA-Z0-9_.]+]] = getelementptr float, float* %gep4, i32 3 ; CHECK: load float, float* [[gep]] %gep4 = getelementptr [4 x [4 x float]], [4 x [4 x float]]* %in, i32 0, i32 0, i32 0 %bc4 = bitcast float* %gep4 to <4 x float>* %ld4 = load <4 x float>, <4 x float>* %bc4 ret void }