blob: 5a79ca82bc29b54cf8757bf5746b737f33329e37 [file] [log] [blame]
Tom Stellard49f8bfd2015-01-06 18:00:21 +00001; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
Marek Olsak75170772015-01-27 17:27:15 +00002; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
Tim Northoverf861de32014-07-18 08:43:24 +00003
4declare float @llvm.convert.from.fp16.f32(i16) nounwind readnone
5declare double @llvm.convert.from.fp16.f64(i16) nounwind readnone
6
Tom Stellard79243d92014-10-01 17:15:17 +00007; SI-LABEL: {{^}}test_convert_fp16_to_fp32:
Tom Stellard326d6ec2014-11-05 14:50:53 +00008; SI: buffer_load_ushort [[VAL:v[0-9]+]]
9; SI: v_cvt_f32_f16_e32 [[RESULT:v[0-9]+]], [[VAL]]
10; SI: buffer_store_dword [[RESULT]]
Tim Northoverf861de32014-07-18 08:43:24 +000011define void @test_convert_fp16_to_fp32(float addrspace(1)* noalias %out, i16 addrspace(1)* noalias %in) nounwind {
David Blaikiea79ac142015-02-27 21:17:42 +000012 %val = load i16, i16 addrspace(1)* %in, align 2
Tim Northoverf861de32014-07-18 08:43:24 +000013 %cvt = call float @llvm.convert.from.fp16.f32(i16 %val) nounwind readnone
14 store float %cvt, float addrspace(1)* %out, align 4
15 ret void
16}
17
18
Tom Stellard79243d92014-10-01 17:15:17 +000019; SI-LABEL: {{^}}test_convert_fp16_to_fp64:
Tom Stellard326d6ec2014-11-05 14:50:53 +000020; SI: buffer_load_ushort [[VAL:v[0-9]+]]
21; SI: v_cvt_f32_f16_e32 [[RESULT32:v[0-9]+]], [[VAL]]
22; SI: v_cvt_f64_f32_e32 [[RESULT:v\[[0-9]+:[0-9]+\]]], [[RESULT32]]
23; SI: buffer_store_dwordx2 [[RESULT]]
Tim Northoverf861de32014-07-18 08:43:24 +000024define void @test_convert_fp16_to_fp64(double addrspace(1)* noalias %out, i16 addrspace(1)* noalias %in) nounwind {
David Blaikiea79ac142015-02-27 21:17:42 +000025 %val = load i16, i16 addrspace(1)* %in, align 2
Tim Northoverf861de32014-07-18 08:43:24 +000026 %cvt = call double @llvm.convert.from.fp16.f64(i16 %val) nounwind readnone
27 store double %cvt, double addrspace(1)* %out, align 4
28 ret void
29}