blob: 10d98fd0a0610b7b7ed8bbde0ae09786c41cb3b5 [file] [log] [blame]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -passes=amdgpu-promote-alloca < %s | FileCheck %s
; Checks that certain CFGs are handled correctly.
define amdgpu_kernel void @chain(i32 %init, i32 %i.1, i32 %i.2) {
; CHECK-LABEL: @chain(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[A:%.*]] = freeze <4 x i8> poison
; CHECK-NEXT: [[TMP0:%.*]] = bitcast i32 [[INIT:%.*]] to <4 x i8>
; CHECK-NEXT: br label [[BB1:%.*]]
; CHECK: bb1:
; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x i8> [[TMP0]], i32 [[I_1:%.*]]
; CHECK-NEXT: br label [[BB2:%.*]]
; CHECK: bb2:
; CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x i8> [[TMP0]], i32 [[I_2:%.*]]
; CHECK-NEXT: ret void
;
entry:
%a = alloca [4 x i8], align 4, addrspace(5)
store i32 %init, ptr addrspace(5) %a
br label %bb1
bb1:
%p.1 = getelementptr i8, ptr addrspace(5) %a, i32 %i.1
%x.1 = load i8, ptr addrspace(5) %p.1
br label %bb2
bb2:
%p.2 = getelementptr i8, ptr addrspace(5) %a, i32 %i.2
%x.2 = load i8, ptr addrspace(5) %p.2
ret void
}