| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: opt -S -mtriple=amdgcn-unknown-unknown -passes=amdgpu-promote-alloca < %s | FileCheck %s |
| |
| define void @alloca_value_cross_reference() { |
| ; CHECK-LABEL: define void @alloca_value_cross_reference() { |
| ; CHECK-NEXT: [[_ENTRY:.*:]] |
| ; CHECK-NEXT: [[HIT_ORDERED:%.*]] = freeze <4 x float> poison |
| ; CHECK-NEXT: [[HIT_INDEX:%.*]] = freeze <4 x i32> poison |
| ; CHECK-NEXT: [[TMP0:%.*]] = insertelement <4 x i32> [[HIT_INDEX]], i32 1, i32 0 |
| ; CHECK-NEXT: br [[DOTLR_PH5:label %.*]] |
| ; CHECK: [[_LR_PH5:.*:]] |
| ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x i32> [[TMP0]], i32 0 |
| ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <4 x float> [[HIT_ORDERED]], float 0.000000e+00, i32 [[TMP1]] |
| ; CHECK-NEXT: ret void |
| ; |
| .entry: |
| %hit_ordered = alloca [4 x float], align 4, addrspace(5) |
| %hit_index = alloca [4 x i32], align 4, addrspace(5) |
| store i32 1, ptr addrspace(5) %hit_index, align 4 |
| br label %.lr.ph5 |
| |
| ; The separate block is needed to avoid constant-folding on |
| ; the load from %hit_index. |
| .lr.ph5: |
| %i = load i32, ptr addrspace(5) %hit_index, align 4 |
| %p = getelementptr float, ptr addrspace(5) %hit_ordered, i32 %i |
| store float 0.000000e+00, ptr addrspace(5) %p, align 4 |
| ret void |
| } |