| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out "s_setreg_imm32_b32" --filter-out "shader" --version 6 |
| ; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1250 -mattr=-real-true16 < %s | FileCheck -check-prefixes=GCN,FAKE16 %s |
| ; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx1250 -mattr=+real-true16 < %s | FileCheck -check-prefixes=GCN,REAL16 %s |
| |
| define amdgpu_ps float @v_sin_f32(float %src) #1 { |
| ; GCN-LABEL: v_sin_f32: |
| ; GCN: ; %bb.0: |
| ; GCN: v_sin_f32_e32 v0, v0 |
| %sin = call float @llvm.amdgcn.sin.f32(float %src) #0 |
| ret float %sin |
| } |
| |
| define amdgpu_ps float @s_sin_f32(float inreg %src) #1 { |
| ; GCN-LABEL: s_sin_f32: |
| ; GCN: ; %bb.0: |
| ; GCN: v_sin_f32_e32 v0, s0 |
| %sin = call float @llvm.amdgcn.sin.f32(float %src) #0 |
| ret float %sin |
| } |
| |
| define amdgpu_ps half @v_sin_f16(half %src) #1 { |
| ; FAKE16-LABEL: v_sin_f16: |
| ; FAKE16: ; %bb.0: |
| ; FAKE16: v_sin_f16_e32 v0, v0 |
| ; |
| ; REAL16-LABEL: v_sin_f16: |
| ; REAL16: ; %bb.0: |
| ; REAL16: v_sin_f16_e32 v0.l, v0.l |
| %sin = call half @llvm.amdgcn.sin.f16(half %src) #0 |
| ret half %sin |
| } |
| |
| define amdgpu_ps half @s_sin_f16(half inreg %src) #1 { |
| ; FAKE16-LABEL: s_sin_f16: |
| ; FAKE16: ; %bb.0: |
| ; FAKE16: v_sin_f16_e32 v0, s0 |
| ; |
| ; REAL16-LABEL: s_sin_f16: |
| ; REAL16: ; %bb.0: |
| ; REAL16: v_sin_f16_e32 v0.l, s0 |
| %sin = call half @llvm.amdgcn.sin.f16(half %src) #0 |
| ret half %sin |
| } |
| |
| define amdgpu_ps float @v_cos_f32(float %src) #1 { |
| ; GCN-LABEL: v_cos_f32: |
| ; GCN: ; %bb.0: |
| ; GCN: v_cos_f32_e32 v0, v0 |
| %cos = call float @llvm.amdgcn.cos.f32(float %src) #0 |
| ret float %cos |
| } |
| |
| define amdgpu_ps float @s_cos_f32(float inreg %src) #1 { |
| ; GCN-LABEL: s_cos_f32: |
| ; GCN: ; %bb.0: |
| ; GCN: v_cos_f32_e32 v0, s0 |
| %cos = call float @llvm.amdgcn.cos.f32(float %src) #0 |
| ret float %cos |
| } |
| |
| define amdgpu_ps half @v_cos_f16(half %src) #1 { |
| ; FAKE16-LABEL: v_cos_f16: |
| ; FAKE16: ; %bb.0: |
| ; FAKE16: v_cos_f16_e32 v0, v0 |
| ; |
| ; REAL16-LABEL: v_cos_f16: |
| ; REAL16: ; %bb.0: |
| ; REAL16: v_cos_f16_e32 v0.l, v0.l |
| %cos = call half @llvm.amdgcn.cos.f16(half %src) #0 |
| ret half %cos |
| } |
| |
| define amdgpu_ps half @s_cos_f16(half inreg %src) #1 { |
| ; FAKE16-LABEL: s_cos_f16: |
| ; FAKE16: ; %bb.0: |
| ; FAKE16: v_cos_f16_e32 v0, s0 |
| ; |
| ; REAL16-LABEL: s_cos_f16: |
| ; REAL16: ; %bb.0: |
| ; REAL16: v_cos_f16_e32 v0.l, s0 |
| %cos = call half @llvm.amdgcn.cos.f16(half %src) #0 |
| ret half %cos |
| } |
| |
| |
| declare float @llvm.amdgcn.sin.f32(float) #0 |
| declare half @llvm.amdgcn.sin.f16(half) #0 |
| |
| declare float @llvm.amdgcn.cos.f32(float) #0 |
| declare half @llvm.amdgcn.cos.f16(half) #0 |
| |
| attributes #0 = { nounwind readnone } |
| attributes #1 = { nounwind } |