2
0

fp16.ll 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. ; RUN: llc -march=nvptx -verify-machineinstrs < %s | FileCheck %s
  2. declare float @llvm.convert.from.fp16.f32(i16) nounwind readnone
  3. declare double @llvm.convert.from.fp16.f64(i16) nounwind readnone
  4. declare i16 @llvm.convert.to.fp16.f32(float) nounwind readnone
  5. declare i16 @llvm.convert.to.fp16.f64(double) nounwind readnone
  6. ; CHECK-LABEL: @test_convert_fp16_to_fp32
  7. ; CHECK: cvt.f32.f16
  8. define void @test_convert_fp16_to_fp32(float addrspace(1)* noalias %out, i16 addrspace(1)* noalias %in) nounwind {
  9. %val = load i16, i16 addrspace(1)* %in, align 2
  10. %cvt = call float @llvm.convert.from.fp16.f32(i16 %val) nounwind readnone
  11. store float %cvt, float addrspace(1)* %out, align 4
  12. ret void
  13. }
  14. ; CHECK-LABEL: @test_convert_fp16_to_fp64
  15. ; CHECK: cvt.f64.f16
  16. define void @test_convert_fp16_to_fp64(double addrspace(1)* noalias %out, i16 addrspace(1)* noalias %in) nounwind {
  17. %val = load i16, i16 addrspace(1)* %in, align 2
  18. %cvt = call double @llvm.convert.from.fp16.f64(i16 %val) nounwind readnone
  19. store double %cvt, double addrspace(1)* %out, align 4
  20. ret void
  21. }
  22. ; CHECK-LABEL: @test_convert_fp32_to_fp16
  23. ; CHECK: cvt.rn.f16.f32
  24. define void @test_convert_fp32_to_fp16(i16 addrspace(1)* noalias %out, float addrspace(1)* noalias %in) nounwind {
  25. %val = load float, float addrspace(1)* %in, align 2
  26. %cvt = call i16 @llvm.convert.to.fp16.f32(float %val) nounwind readnone
  27. store i16 %cvt, i16 addrspace(1)* %out, align 4
  28. ret void
  29. }
  30. ; CHECK-LABEL: @test_convert_fp64_to_fp16
  31. ; CHECK: cvt.rn.f16.f64
  32. define void @test_convert_fp64_to_fp16(i16 addrspace(1)* noalias %out, double addrspace(1)* noalias %in) nounwind {
  33. %val = load double, double addrspace(1)* %in, align 2
  34. %cvt = call i16 @llvm.convert.to.fp16.f64(double %val) nounwind readnone
  35. store i16 %cvt, i16 addrspace(1)* %out, align 4
  36. ret void
  37. }