1// REQUIRES: amdgpu-registered-target
2// RUN: %clang_cc1 -triple amdgcn-unknown-unknown -target-cpu gfx940 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-GFX940
3
4typedef float  v2f   __attribute__((ext_vector_type(2)));
5
6// CHECK-GFX940-LABEL: @test_cvt_f32_bf8
7// CHECK-GFX940: call float @llvm.amdgcn.cvt.f32.bf8(i32 %a, i32 0)
8void test_cvt_f32_bf8(global int* out, int a)
9{
10  *out = __builtin_amdgcn_cvt_f32_bf8(a, 0);
11}
12
13// CHECK-GFX940-LABEL: @test_cvt_f32_fp8
14// CHECK-GFX940: call float @llvm.amdgcn.cvt.f32.fp8(i32 %a, i32 1)
15void test_cvt_f32_fp8(global int* out, int a)
16{
17  *out = __builtin_amdgcn_cvt_f32_fp8(a, 1);
18}
19
20// CHECK-GFX940-LABEL: @test_cvt_pk_f32_bf8
21// CHECK-GFX940: call <2 x float> @llvm.amdgcn.cvt.pk.f32.bf8(i32 %a, i1 false)
22void test_cvt_pk_f32_bf8(global v2f* out, int a)
23{
24  *out = __builtin_amdgcn_cvt_pk_f32_bf8(a, false);
25}
26
27// CHECK-GFX940-LABEL: @test_cvt_pk_f32_fp8
28// CHECK-GFX940: call <2 x float> @llvm.amdgcn.cvt.pk.f32.fp8(i32 %a, i1 true)
29void test_cvt_pk_f32_fp8(global v2f* out, int a)
30{
31  *out = __builtin_amdgcn_cvt_pk_f32_fp8(a, true);
32}
33
34// CHECK-GFX940-LABEL: @test_cvt_pk_bf8_f32
35// CHECK-GFX940: call i32 @llvm.amdgcn.cvt.pk.bf8.f32(float %a, float %b, i32 %old, i1 false)
36void test_cvt_pk_bf8_f32(global int* out, int old, float a, float b)
37{
38  *out = __builtin_amdgcn_cvt_pk_bf8_f32(a, b, old, false);
39}
40
41// CHECK-GFX940-LABEL: @test_cvt_pk_fp8_f32
42// CHECK-GFX940: call i32 @llvm.amdgcn.cvt.pk.fp8.f32(float %a, float %b, i32 %old, i1 true)
43void test_cvt_pk_fp8_f32(global int* out, int old, float a, float b)
44{
45  *out = __builtin_amdgcn_cvt_pk_fp8_f32(a, b, old, true);
46}
47
48// CHECK-GFX940-LABEL: @test_cvt_sr_bf8_f32
49// CHECK-GFX940: call i32 @llvm.amdgcn.cvt.sr.bf8.f32(float %a, i32 %b, i32 %old, i32 2)
50void test_cvt_sr_bf8_f32(global int* out, int old, float a, int b)
51{
52  *out = __builtin_amdgcn_cvt_sr_bf8_f32(a, b, old, 2);
53}
54
55// CHECK-GFX940-LABEL: @test_cvt_sr_fp8_f32
56// CHECK-GFX940: call i32 @llvm.amdgcn.cvt.sr.fp8.f32(float %a, i32 %b, i32 %old, i32 3)
57void test_cvt_sr_fp8_f32(global int* out, int old, float a, int b)
58{
59  *out = __builtin_amdgcn_cvt_sr_fp8_f32(a, b, old, 3);
60}
61