| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: opt -S -passes='instcombine' -mtriple=amdgcn-amd-amdhsa < %s | FileCheck %s --check-prefix=AMDHSA |
| ; RUN: opt -S -passes='instcombine' -mtriple=amdgcn-mesa-mesa3d < %s | FileCheck %s --check-prefix=MESA |
| |
| ; InstCombine added retattr dereferenceable(bytes) to a "call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr()". |
| |
| define ptr addrspace(4) @foo() { |
| ; AMDHSA-LABEL: define ptr addrspace(4) @foo() { |
| ; AMDHSA-NEXT: [[ENTRY:.*:]] |
| ; AMDHSA-NEXT: [[TMP:%.*]] = tail call dereferenceable(256) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; AMDHSA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| ; MESA-LABEL: define ptr addrspace(4) @foo() { |
| ; MESA-NEXT: [[ENTRY:.*:]] |
| ; MESA-NEXT: [[TMP:%.*]] = tail call dereferenceable(16) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; MESA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| entry: |
| %tmp = tail call ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ret ptr addrspace(4) %tmp |
| } |
| |
| define ptr addrspace(4) @bar() { |
| ; AMDHSA-LABEL: define ptr addrspace(4) @bar() { |
| ; AMDHSA-NEXT: [[ENTRY:.*:]] |
| ; AMDHSA-NEXT: [[TMP:%.*]] = tail call dereferenceable(256) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; AMDHSA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| ; MESA-LABEL: define ptr addrspace(4) @bar() { |
| ; MESA-NEXT: [[ENTRY:.*:]] |
| ; MESA-NEXT: [[TMP:%.*]] = tail call dereferenceable(128) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; MESA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| entry: |
| %tmp = tail call dereferenceable(128) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ret ptr addrspace(4) %tmp |
| } |
| |
| define ptr addrspace(4) @baz() { |
| ; AMDHSA-LABEL: define ptr addrspace(4) @baz() { |
| ; AMDHSA-NEXT: [[ENTRY:.*:]] |
| ; AMDHSA-NEXT: [[TMP:%.*]] = tail call dereferenceable(512) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; AMDHSA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| ; MESA-LABEL: define ptr addrspace(4) @baz() { |
| ; MESA-NEXT: [[ENTRY:.*:]] |
| ; MESA-NEXT: [[TMP:%.*]] = tail call dereferenceable(512) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; MESA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| entry: |
| %tmp = tail call dereferenceable(512) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ret ptr addrspace(4) %tmp |
| } |
| |
| define ptr addrspace(4) @derefornull() { |
| ; AMDHSA-LABEL: define ptr addrspace(4) @derefornull() { |
| ; AMDHSA-NEXT: [[ENTRY:.*:]] |
| ; AMDHSA-NEXT: [[TMP:%.*]] = tail call dereferenceable(256) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; AMDHSA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| ; MESA-LABEL: define ptr addrspace(4) @derefornull() { |
| ; MESA-NEXT: [[ENTRY:.*:]] |
| ; MESA-NEXT: [[TMP:%.*]] = tail call dereferenceable(64) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ; MESA-NEXT: ret ptr addrspace(4) [[TMP]] |
| ; |
| entry: |
| %tmp = tail call dereferenceable_or_null(64) ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() |
| ret ptr addrspace(4) %tmp |
| } |
| |
| ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) |
| declare noundef align 4 ptr addrspace(4) @llvm.amdgcn.implicitarg.ptr() #1 |
| |
| attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } |
| |
| !llvm.module.flags = !{!0} |
| |
| !0 = !{i32 1, !"amdhsa_code_object_version", i32 600} |