blob: 822d24208754fee65ab1187008f1d3f56ff30c03 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out "s_mov" --version 6
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=GFX8 %s
; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=GFX8 %s
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefix=GFX12PLUS %s
; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1200 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefix=GFX12PLUS %s
declare i32 @llvm.amdgcn.sffbh.i32(i32) #1
define amdgpu_ps i32 @s_sffbh(i32 inreg %val) {
; GFX8-LABEL: s_sffbh:
; GFX8: ; %bb.0:
; GFX8: s_flbit_i32 s0, s0
; GFX8: ; return to shader part epilog
;
; GFX12PLUS-LABEL: s_sffbh:
; GFX12PLUS: ; %bb.0:
; GFX12PLUS: s_cls_i32 s0, s0
; GFX12PLUS: ; return to shader part epilog
%r = call i32 @llvm.amdgcn.sffbh.i32(i32 %val)
ret i32 %r
}
define amdgpu_ps i32 @v_sffbh(i32 %val) {
; GFX8-LABEL: v_sffbh:
; GFX8: ; %bb.0:
; GFX8: v_ffbh_i32_e32 v0, v0
; GFX8: v_readfirstlane_b32 s0, v0
; GFX8: ; return to shader part epilog
;
; GFX12PLUS-LABEL: v_sffbh:
; GFX12PLUS: ; %bb.0:
; GFX12PLUS: v_cls_i32_e32 v0, v0
; GFX12PLUS: v_readfirstlane_b32 s0, v0
; GFX12PLUS: ; return to shader part epilog
%r = call i32 @llvm.amdgcn.sffbh.i32(i32 %val)
ret i32 %r
}
attributes #1 = { nounwind readnone }