Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[AMDGPU] Allow MIMG with no uses in adjustWritemask in isel
Summary: If an MIMG instruction has managed to get through to adjustWritemask in isel but has no uses (and doesn't enable TFC) then prevent an assertion by not attempting to adjust the writemask. The instruction will be removed anyway. Change-Id: I9a5dba6bafe1f35ac99c1b73df390936e2ac27a7 Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, tpr, t-tye, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58964 llvm-svn: 356540
- Loading branch information
Showing
2 changed files
with
26 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
; RUN: llc -march=amdgcn -mcpu=gfx900 -start-before=amdgpu-isel -stop-after=amdgpu-isel -verify-machineinstrs < %s | FileCheck %s --check-prefix=GCN | ||
|
||
; We're really just checking for no crashes | ||
; The feature we're testing for in AdjustWriteMask leaves the image_load as an instruction just post amdgpu-isel | ||
; In reality, it's hard to get an image intrinsic into AdjustWriteMask with no uses as it will usually get removed | ||
; first, but it can happen, hence the fix associated with this test | ||
|
||
; GCN-LABEL: name: _amdgpu_cs_main | ||
; GCN-LABEL: bb.0 | ||
; GCN: IMAGE_LOAD_V4_V2 | ||
define amdgpu_cs void @_amdgpu_cs_main(i32 %dummy) local_unnamed_addr #0 { | ||
.entry: | ||
%unused.result = tail call <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i32(i32 15, i32 undef, i32 undef, <8 x i32> undef, i32 0, i32 0) #3 | ||
call void asm sideeffect ";", "" () #0 | ||
ret void | ||
} | ||
|
||
; Function Attrs: nounwind readonly | ||
declare <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i32(i32, i32, i32, <8 x i32>, i32, i32) #1 | ||
|
||
attributes #0 = { nounwind } | ||
attributes #1 = { nounwind readonly } |