1 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_89 -mattr=+ptx81 | FileCheck %s
2 ; RUN: %if ptxas-12.1 %{ llc < %s -march=nvptx64 -mcpu=sm_89 -mattr=+ptx81 | %ptxas-verify -arch=sm_89 %}
4 ; CHECK-LABEL: cvt_rn_e4m3x2_f32
5 define i16 @cvt_rn_e4m3x2_f32(float %f1, float %f2) {
6 ; CHECK: cvt.rn.satfinite.e4m3x2.f32
7 %val = call i16 @llvm.nvvm.ff.to.e4m3x2.rn(float %f1, float %f2);
11 ; CHECK-LABEL: cvt_rn_relu_e4m3x2_f32
12 define i16 @cvt_rn_relu_e4m3x2_f32(float %f1, float %f2) {
13 ; CHECK: cvt.rn.satfinite.relu.e4m3x2.f32
14 %val = call i16 @llvm.nvvm.ff.to.e4m3x2.rn.relu(float %f1, float %f2);
18 ; CHECK-LABEL: cvt_rn_e5m2x2_f32
19 define i16 @cvt_rn_e5m2x2_f32(float %f1, float %f2) {
20 ; CHECK: cvt.rn.satfinite.e5m2x2.f32
21 %val = call i16 @llvm.nvvm.ff.to.e5m2x2.rn(float %f1, float %f2);
25 ; CHECK-LABEL: cvt_rn_relu_e5m2x2_f32
26 define i16 @cvt_rn_relu_e5m2x2_f32(float %f1, float %f2) {
27 ; CHECK: cvt.rn.satfinite.relu.e5m2x2.f32
28 %val = call i16 @llvm.nvvm.ff.to.e5m2x2.rn.relu(float %f1, float %f2);
32 ; CHECK-LABEL: cvt_rn_e4m3x2_f16x2
33 define i16 @cvt_rn_e4m3x2_f16x2(<2 x half> %in) {
34 ; CHECK: cvt.rn.satfinite.e4m3x2.f16x2
35 %val = call i16 @llvm.nvvm.f16x2.to.e4m3x2.rn(<2 x half> %in);
39 ; CHECK-LABEL: cvt_rn_relu_e4m3x2_f16x2
40 define i16 @cvt_rn_relu_e4m3x2_f16x2(<2 x half> %in) {
41 ; CHECK: cvt.rn.satfinite.relu.e4m3x2.f16x2
42 %val = call i16 @llvm.nvvm.f16x2.to.e4m3x2.rn.relu(<2 x half> %in);
46 ; CHECK-LABEL: cvt_rn_e5m2x2_f16x2
47 define i16 @cvt_rn_e5m2x2_f16x2(<2 x half> %in) {
48 ; CHECK: cvt.rn.satfinite.e5m2x2.f16x2
49 %val = call i16 @llvm.nvvm.f16x2.to.e5m2x2.rn(<2 x half> %in);
53 ; CHECK-LABEL: cvt_rn_relu_e5m2x2_f16x2
54 define i16 @cvt_rn_relu_e5m2x2_f16x2(<2 x half> %in) {
55 ; CHECK: cvt.rn.satfinite.relu.e5m2x2.f16x2
56 %val = call i16 @llvm.nvvm.f16x2.to.e5m2x2.rn.relu(<2 x half> %in);
60 ; CHECK-LABEL: cvt_rn_f16x2_e4m3x2
61 define <2 x half> @cvt_rn_f16x2_e4m3x2(i16 %in) {
62 ; CHECK: cvt.rn.f16x2.e4m3x2
63 %val = call <2 x half> @llvm.nvvm.e4m3x2.to.f16x2.rn(i16 %in);
67 ; CHECK-LABEL: cvt_rn_relu_f16x2_e4m3x2
68 define <2 x half> @cvt_rn_relu_f16x2_e4m3x2(i16 %in) {
69 ; CHECK: cvt.rn.relu.f16x2.e4m3x2
70 %val = call <2 x half> @llvm.nvvm.e4m3x2.to.f16x2.rn.relu(i16 %in);
74 ; CHECK-LABEL: cvt_rn_f16x2_e5m2x2
75 define <2 x half> @cvt_rn_f16x2_e5m2x2(i16 %in) {
76 ; CHECK: cvt.rn.f16x2.e5m2x2
77 %val = call <2 x half> @llvm.nvvm.e5m2x2.to.f16x2.rn(i16 %in);
81 ; CHECK-LABEL: cvt_rn_relu_f16x2_e5m2x2
82 define <2 x half> @cvt_rn_relu_f16x2_e5m2x2(i16 %in) {
83 ; CHECK: cvt.rn.relu.f16x2.e5m2x2
84 %val = call <2 x half> @llvm.nvvm.e5m2x2.to.f16x2.rn.relu(i16 %in);