• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -march=amdgcn -mcpu=SI < %s | FileCheck -check-prefix=SI %s
2; RUN: llc -march=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=SI %s
3
4declare float @llvm.AMDGPU.cvt.f32.ubyte0(i32) nounwind readnone
5declare float @llvm.AMDGPU.cvt.f32.ubyte1(i32) nounwind readnone
6declare float @llvm.AMDGPU.cvt.f32.ubyte2(i32) nounwind readnone
7declare float @llvm.AMDGPU.cvt.f32.ubyte3(i32) nounwind readnone
8
9; SI-LABEL: {{^}}test_unpack_byte0_to_float:
10; SI: v_cvt_f32_ubyte0
11define void @test_unpack_byte0_to_float(float addrspace(1)* %out, i32 addrspace(1)* %in) nounwind {
12  %val = load i32, i32 addrspace(1)* %in, align 4
13  %cvt = call float @llvm.AMDGPU.cvt.f32.ubyte0(i32 %val) nounwind readnone
14  store float %cvt, float addrspace(1)* %out, align 4
15  ret void
16}
17
18; SI-LABEL: {{^}}test_unpack_byte1_to_float:
19; SI: v_cvt_f32_ubyte1
20define void @test_unpack_byte1_to_float(float addrspace(1)* %out, i32 addrspace(1)* %in) nounwind {
21  %val = load i32, i32 addrspace(1)* %in, align 4
22  %cvt = call float @llvm.AMDGPU.cvt.f32.ubyte1(i32 %val) nounwind readnone
23  store float %cvt, float addrspace(1)* %out, align 4
24  ret void
25}
26
27; SI-LABEL: {{^}}test_unpack_byte2_to_float:
28; SI: v_cvt_f32_ubyte2
29define void @test_unpack_byte2_to_float(float addrspace(1)* %out, i32 addrspace(1)* %in) nounwind {
30  %val = load i32, i32 addrspace(1)* %in, align 4
31  %cvt = call float @llvm.AMDGPU.cvt.f32.ubyte2(i32 %val) nounwind readnone
32  store float %cvt, float addrspace(1)* %out, align 4
33  ret void
34}
35
36; SI-LABEL: {{^}}test_unpack_byte3_to_float:
37; SI: v_cvt_f32_ubyte3
38define void @test_unpack_byte3_to_float(float addrspace(1)* %out, i32 addrspace(1)* %in) nounwind {
39  %val = load i32, i32 addrspace(1)* %in, align 4
40  %cvt = call float @llvm.AMDGPU.cvt.f32.ubyte3(i32 %val) nounwind readnone
41  store float %cvt, float addrspace(1)* %out, align 4
42  ret void
43}
44