|
| 1 | +;=========================== begin_copyright_notice ============================ |
| 2 | +; |
| 3 | +; Copyright (C) 2025 Intel Corporation |
| 4 | +; |
| 5 | +; SPDX-License-Identifier: MIT |
| 6 | +; |
| 7 | +;============================ end_copyright_notice ============================= |
| 8 | + |
| 9 | +; RUN: igc_opt --typed-pointers %s -S --shrink-array-alloca | FileCheck %s |
| 10 | +; |
| 11 | + |
| 12 | +define float @f0(i32 %index, float %data0) #1 { |
| 13 | +Label-0: |
| 14 | + %alloca = alloca [64 x <4 x float>], align 16 |
| 15 | + %addr = getelementptr [64 x <4 x float>], [64 x <4 x float>]* %alloca, i32 0, i32 %index |
| 16 | + %vec0 = load <4 x float>, <4 x float>* %addr |
| 17 | + %data1 = insertelement <4 x float> %vec0, float %data0, i64 2 |
| 18 | + store <4 x float> %data1, <4 x float>* %addr, align 16 |
| 19 | + %addr1 = getelementptr [64 x <4 x float>], [64 x <4 x float>]* %alloca, i32 0, i32 %index |
| 20 | + %vec1 = load <4 x float>, <4 x float>* %addr1 |
| 21 | + %a = extractelement <4 x float> %vec1, i64 2 |
| 22 | + ret float %a |
| 23 | +} |
| 24 | + |
| 25 | +; CHECK: [[ALLOCA:%[A-z0-9]*]] = alloca [64 x float], align 4 |
| 26 | +; CHECK: [[ADDR:%[A-z0-9]*]] = getelementptr [64 x float], [64 x float]* [[ALLOCA]], i32 0, i32 %index |
| 27 | +; CHECK: [[Z:%[A-z0-9]*]] = load float, float* [[ADDR]], align 4 |
| 28 | +; CHECK: [[VEC0:%[A-z0-9]*]] = insertelement <4 x float> undef, float [[Z]], i64 2 |
| 29 | +; CHECK: [[VEC1:%[A-z0-9]*]] = insertelement <4 x float> [[VEC0]], float %data0, i64 2 |
| 30 | +; CHECK: [[Z:%[A-z0-9]*]] = extractelement <4 x float> [[VEC1]], i64 2 |
| 31 | +; CHECK-NEXT: store float [[Z]], float* [[ADDR]], align 4 |
| 32 | +; CHECK: [[ADDR:%[A-z0-9]*]] = getelementptr [64 x float], [64 x float]* [[ALLOCA]], i32 0, i32 %index |
| 33 | +; CHECK: [[A:%[A-z0-9]*]] = load float, float* [[ADDR]], align 4 |
| 34 | +; CHECK: ret float [[A]] |
| 35 | + |
| 36 | +attributes #1 = { "null-pointer-is-valid"="true" } |
| 37 | + |
0 commit comments