| ; 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 |
| } |