blob: 05dd9d7387012dbae6869473bb97f5f018fdc419 [file] [log] [blame] [edit]
; 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
}