brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · f437cd2 Raw
68 lines · plain
1; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=CHECK,WAVE64 %s2; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=CHECK,WAVE64 %s3; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=CHECK,WAVE32 %s4; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=CHECK,WAVE32 %s5; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=CHECK,WAVE32 %s6; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck -check-prefixes=CHECK,WAVE32 %s7 8;CHECK-LABEL: {{^}}ret:9;CHECK: v_cmp_eq_u32_e32 [[CMP:[^,]+]], v0, v110;WAVE64: s_wqm_b64 [[WQM:[^,]+]], [[CMP]]11;WAVE32: s_wqm_b32 [[WQM:[^,]+]], [[CMP]]12;CHECK: v_cndmask_b32_e64 v0, 0, 1.0, [[WQM]]13define amdgpu_ps float @ret(i32 %v0, i32 %v1) #1 {14main_body:15  %c = icmp eq i32 %v0, %v116  %w = call i1 @llvm.amdgcn.wqm.vote(i1 %c)17  %r = select i1 %w, float 1.0, float 0.018  ret float %r19}20 21;CHECK-LABEL: {{^}}true:22;WAVE64: s_wqm_b6423;WAVE32: s_wqm_b3224define amdgpu_ps float @true() #1 {25main_body:26  %w = call i1 @llvm.amdgcn.wqm.vote(i1 true)27  %r = select i1 %w, float 1.0, float 0.028  ret float %r29}30 31;CHECK-LABEL: {{^}}false:32;WAVE64: s_wqm_b6433;WAVE32: s_wqm_b3234define amdgpu_ps float @false() #1 {35main_body:36  %w = call i1 @llvm.amdgcn.wqm.vote(i1 false)37  %r = select i1 %w, float 1.0, float 0.038  ret float %r39}40 41; Note: an almost identical test for this exists in llvm.amdgcn.kill.ll42;CHECK-LABEL: {{^}}kill:43;CHECK: v_cmp_eq_u32_e32 [[CMP:[^,]+]], v0, v144 45;WAVE64: s_wqm_b64 [[WQM:[^,]+]], [[CMP]]46;WAVE64: s_andn2_b64 [[KILL:[^,]+]], exec, [[WQM]]47;WAVE64: s_andn2_b64 [[MASK:[^,]+]], [[EXEC:[^,]+]], [[KILL]]48;WAVE64: s_and_b64 exec, exec, [[MASK]]49 50;WAVE32: s_wqm_b32 [[WQM:[^,]+]], [[CMP]]51;WAVE32: s_and{{n2|_not1}}_b32 [[KILL:[^,]+]], exec_lo, [[WQM]]52;WAVE32: s_and{{n2|_not1}}_b32 [[MASK:[^,]+]], [[EXEC:[^,]+]], [[KILL]]53;WAVE32: s_and_b32 exec_lo, exec_lo, [[MASK]]54 55;CHECK: s_endpgm56define amdgpu_ps float @kill(i32 %v0, i32 %v1) #1 {57main_body:58  %c = icmp eq i32 %v0, %v159  %w = call i1 @llvm.amdgcn.wqm.vote(i1 %c)60  call void @llvm.amdgcn.kill(i1 %w)61  ret float 0.062}63 64declare void @llvm.amdgcn.kill(i1) #165declare i1 @llvm.amdgcn.wqm.vote(i1)66 67attributes #1 = { nounwind }68