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