Files
clang-p2996/llvm/test/CodeGen/AMDGPU/cse-phi-incoming-val.ll
Jay Foad f3a02253e9 [test] Remove immarg parameter attribute from calls (#97432)
It is documented that immarg is only valid on intrinsic declarations,
although the verifier also tolerates it on intrinsic calls.

This patch updates tests that are not specifically testing the
behavior of the IR parser or verifier.
2024-07-03 09:02:31 +01:00

43 lines
1.6 KiB
LLVM

; RUN: llc < %s -mtriple=amdgcn--amdpal -mcpu=gfx900 -verify-machineinstrs | FileCheck %s
; Check that the redundant immediate MOV instruction
; (by-product of handling phi nodes) is not found
; in the generated code.
; CHECK-LABEL: {{^}}mov_opt:
; CHECK: s_mov_b32 [[SREG:s[0-9]+]], 1.0
; CHECK: %bb.1:
; CHECK-NOT: v_mov_b32_e32 {{v[0-9]+}}, 1.0
; CHECK: BB0_3:
; CHECK: v_mov_b32_e32 v{{[0-9]+}}, [[SREG]]
define amdgpu_ps void @mov_opt(i32 %arg, i32 inreg %arg1, i32 inreg %arg2) local_unnamed_addr #0 {
bb:
%tmp = icmp eq i32 %arg1, 0
br i1 %tmp, label %bb3, label %bb10
bb3: ; preds = %bb
%tmp4 = icmp eq i32 %arg2, 0
br i1 %tmp4, label %bb5, label %bb10
bb5: ; preds = %bb3
%tmp6 = getelementptr <{ [4294967295 x i32] }>, ptr addrspace(6) null, i32 0, i32 0, i32 %arg
%tmp7 = load i32, ptr addrspace(6) %tmp6
%tmp8 = icmp eq i32 %tmp7, 1
br i1 %tmp8, label %bb10, label %bb9
bb9: ; preds = %bb5
br label %bb10
bb10: ; preds = %bb9, %bb5, %bb3, %bb
%tmp11 = phi float [ 1.000000e+00, %bb3 ], [ 0.000000e+00, %bb9 ], [ 1.000000e+00, %bb ], [ undef, %bb5 ]
call void @llvm.amdgcn.exp.f32(i32 40, i32 15, float %tmp11, float undef, float undef, float undef, i1 false, i1 false) #0
ret void
}
; Function Attrs: inaccessiblememonly nounwind
declare void @llvm.amdgcn.exp.f32(i32 immarg, i32 immarg, float, float, float, float, i1 immarg, i1 immarg) #1
attributes #0 = { nounwind }
attributes #1 = { inaccessiblememonly nounwind }