[lldb] Fix "exact match" debug_names type queries (#118465)
[llvm-project.git] / llvm / test / CodeGen / NVPTX / math-intrins-sm86-ptx72-autoupgrade.ll
blob4070fac67ac9b265cf2f0995a7d49b16f794acec
1 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_86 -mattr=+ptx72 | FileCheck %s
2 ; RUN: %if ptxas-11.2 %{ llc < %s -march=nvptx64 -mcpu=sm_86 -mattr=+ptx72 | %ptxas-verify -arch=sm_86 %}
4 ; CHECK-LABEL: fmin_xorsign_abs_f16
5 define half @fmin_xorsign_abs_f16(half %0, half %1) {
6   ; CHECK-NOT: call
7   ; CHECK: min.xorsign.abs.f16
8   %res = call half @llvm.nvvm.fmin.xorsign.abs.f16(half %0, half %1)
9   ret half %res
12 ; CHECK-LABEL: fmin_ftz_xorsign_abs_f16
13 define half @fmin_ftz_xorsign_abs_f16(half %0, half %1) {
14   ; CHECK-NOT: call
15   ; CHECK: min.ftz.xorsign.abs.f16
16   %res = call half @llvm.nvvm.fmin.ftz.xorsign.abs.f16(half %0, half %1)
17   ret half %res
20 ; CHECK-LABEL: fmin_nan_xorsign_abs_f16
21 define half @fmin_nan_xorsign_abs_f16(half %0, half %1) {
22   ; CHECK-NOT: call
23   ; CHECK: min.NaN.xorsign.abs.f16
24   %res = call half @llvm.nvvm.fmin.nan.xorsign.abs.f16(half %0, half %1)
25   ret half %res
28 ; CHECK-LABEL: fmin_ftz_nan_xorsign_abs_f16
29 define half @fmin_ftz_nan_xorsign_abs_f16(half %0, half %1) {
30   ; CHECK-NOT: call
31   ; CHECK: min.ftz.NaN.xorsign.abs.f16
32   %res = call half @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f16(half %0, half %1)
33   ret half %res
36 ; CHECK-LABEL: fmin_xorsign_abs_f16x2
37 define <2 x half> @fmin_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
38   ; CHECK-NOT: call
39   ; CHECK: min.xorsign.abs.f16x2
40   %res = call <2 x half> @llvm.nvvm.fmin.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
41   ret <2 x half> %res
44 ; CHECK-LABEL: fmin_ftz_xorsign_abs_f16x2
45 define <2 x half> @fmin_ftz_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
46   ; CHECK-NOT: call
47   ; CHECK: min.ftz.xorsign.abs.f16x2
48   %res = call <2 x half> @llvm.nvvm.fmin.ftz.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
49   ret <2 x half> %res
52 ; CHECK-LABEL: fmin_nan_xorsign_abs_f16x2
53 define <2 x half> @fmin_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
54   ; CHECK-NOT: call
55   ; CHECK: min.NaN.xorsign.abs.f16x2
56   %res = call <2 x half> @llvm.nvvm.fmin.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
57   ret <2 x half> %res
60 ; CHECK-LABEL: fmin_ftz_nan_xorsign_abs_f16x2
61 define <2 x half> @fmin_ftz_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
62   ; CHECK-NOT: call
63   ; CHECK: min.ftz.NaN.xorsign.abs.f16x2
64   %res = call <2 x half> @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
65   ret <2 x half> %res
68 ; CHECK-LABEL: fmin_xorsign_abs_bf16
69 define bfloat @fmin_xorsign_abs_bf16(bfloat %0, bfloat %1) {
70   ; CHECK-NOT: call
71   ; CHECK: min.xorsign.abs.bf16
72   %res = call bfloat @llvm.nvvm.fmin.xorsign.abs.bf16(bfloat %0, bfloat %1)
73   ret bfloat %res
76 ; CHECK-LABEL: fmin_nan_xorsign_abs_bf16
77 define bfloat @fmin_nan_xorsign_abs_bf16(bfloat %0, bfloat %1) {
78   ; CHECK-NOT: call
79   ; CHECK: min.NaN.xorsign.abs.bf16
80   %res = call bfloat @llvm.nvvm.fmin.nan.xorsign.abs.bf16(bfloat %0, bfloat %1)
81   ret bfloat %res
84 ; CHECK-LABEL: fmin_xorsign_abs_bf16x2
85 define <2 x bfloat> @fmin_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {
86   ; CHECK-NOT: call
87   ; CHECK: min.xorsign.abs.bf16x2
88   %res = call <2 x bfloat> @llvm.nvvm.fmin.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)
89   ret <2 x bfloat> %res
92 ; CHECK-LABEL: fmin_nan_xorsign_abs_bf16x2
93 define <2 x bfloat> @fmin_nan_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {
94   ; CHECK-NOT: call
95   ; CHECK: min.NaN.xorsign.abs.bf16x2
96   %res = call <2 x bfloat> @llvm.nvvm.fmin.nan.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)
97   ret <2 x bfloat> %res
100 ; CHECK-LABEL: fmin_xorsign_abs_f
101 define float @fmin_xorsign_abs_f(float %0, float %1) {
102   ; CHECK-NOT: call
103   ; CHECK: min.xorsign.abs.f
104   %res = call float @llvm.nvvm.fmin.xorsign.abs.f(float %0, float %1)
105   ret float %res
108 ; CHECK-LABEL: fmin_ftz_xorsign_abs_f
109 define float @fmin_ftz_xorsign_abs_f(float %0, float %1) {
110   ; CHECK-NOT: call
111   ; CHECK: min.ftz.xorsign.abs.f
112   %res = call float @llvm.nvvm.fmin.ftz.xorsign.abs.f(float %0, float %1)
113   ret float %res
116 ; CHECK-LABEL: fmin_nan_xorsign_abs_f
117 define float @fmin_nan_xorsign_abs_f(float %0, float %1) {
118   ; CHECK-NOT: call
119   ; CHECK: min.NaN.xorsign.abs.f
120   %res = call float @llvm.nvvm.fmin.nan.xorsign.abs.f(float %0, float %1)
121   ret float %res
124 ; CHECK-LABEL: fmin_ftz_nan_xorsign_abs_f
125 define float @fmin_ftz_nan_xorsign_abs_f(float %0, float %1) {
126   ; CHECK-NOT: call
127   ; CHECK: min.ftz.NaN.xorsign.abs.f
128   %res = call float @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f(float %0, float %1)
129   ret float %res
132 ; CHECK-LABEL: fmax_xorsign_abs_f16
133 define half @fmax_xorsign_abs_f16(half %0, half %1) {
134   ; CHECK-NOT: call
135   ; CHECK: max.xorsign.abs.f16
136   %res = call half @llvm.nvvm.fmax.xorsign.abs.f16(half %0, half %1)
137   ret half %res
140 ; CHECK-LABEL: fmax_ftz_xorsign_abs_f16
141 define half @fmax_ftz_xorsign_abs_f16(half %0, half %1) {
142   ; CHECK-NOT: call
143   ; CHECK: max.ftz.xorsign.abs.f16
144   %res = call half @llvm.nvvm.fmax.ftz.xorsign.abs.f16(half %0, half %1)
145   ret half %res
148 ; CHECK-LABEL: fmax_nan_xorsign_abs_f16
149 define half @fmax_nan_xorsign_abs_f16(half %0, half %1) {
150   ; CHECK-NOT: call
151   ; CHECK: max.NaN.xorsign.abs.f16
152   %res = call half @llvm.nvvm.fmax.nan.xorsign.abs.f16(half %0, half %1)
153   ret half %res
156 ; CHECK-LABEL: fmax_ftz_nan_xorsign_abs_f16
157 define half @fmax_ftz_nan_xorsign_abs_f16(half %0, half %1) {
158   ; CHECK-NOT: call
159   ; CHECK: max.ftz.NaN.xorsign.abs.f16
160   %res = call half @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f16(half %0, half %1)
161   ret half %res
164 ; CHECK-LABEL: fmax_xorsign_abs_f16x2
165 define <2 x half> @fmax_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
166   ; CHECK-NOT: call
167   ; CHECK: max.xorsign.abs.f16x2
168   %res = call <2 x half> @llvm.nvvm.fmax.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
169   ret <2 x half> %res
172 ; CHECK-LABEL: fmax_ftz_xorsign_abs_f16x2
173 define <2 x half> @fmax_ftz_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
174   ; CHECK-NOT: call
175   ; CHECK: max.ftz.xorsign.abs.f16x2
176   %res = call <2 x half> @llvm.nvvm.fmax.ftz.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
177   ret <2 x half> %res
180 ; CHECK-LABEL: fmax_nan_xorsign_abs_f16x2
181 define <2 x half> @fmax_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
182   ; CHECK-NOT: call
183   ; CHECK: max.NaN.xorsign.abs.f16x2
184   %res = call <2 x half> @llvm.nvvm.fmax.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
185   ret <2 x half> %res
188 ; CHECK-LABEL: fmax_ftz_nan_xorsign_abs_f16x2
189 define <2 x half> @fmax_ftz_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {
190   ; CHECK-NOT: call
191   ; CHECK: max.ftz.NaN.xorsign.abs.f16x2
192   %res = call <2 x half> @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)
193   ret <2 x half> %res
196 ; CHECK-LABEL: fmax_xorsign_abs_bf16
197 define bfloat @fmax_xorsign_abs_bf16(bfloat %0, bfloat %1) {
198   ; CHECK-NOT: call
199   ; CHECK: max.xorsign.abs.bf16
200   %res = call bfloat @llvm.nvvm.fmax.xorsign.abs.bf16(bfloat %0, bfloat %1)
201   ret bfloat %res
204 ; CHECK-LABEL: fmax_nan_xorsign_abs_bf16
205 define bfloat @fmax_nan_xorsign_abs_bf16(bfloat %0, bfloat %1) {
206   ; CHECK-NOT: call
207   ; CHECK: max.NaN.xorsign.abs.bf16
208   %res = call bfloat @llvm.nvvm.fmax.nan.xorsign.abs.bf16(bfloat %0, bfloat %1)
209   ret bfloat %res
212 ; CHECK-LABEL: fmax_xorsign_abs_bf16x2
213 define <2 x bfloat> @fmax_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {
214   ; CHECK-NOT: call
215   ; CHECK: max.xorsign.abs.bf16x2
216   %res = call <2 x bfloat> @llvm.nvvm.fmax.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)
217   ret <2 x bfloat> %res
220 ; CHECK-LABEL: fmax_nan_xorsign_abs_bf16x2
221 define <2 x bfloat> @fmax_nan_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {
222   ; CHECK-NOT: call
223   ; CHECK: max.NaN.xorsign.abs.bf16x2
224   %res = call <2 x bfloat> @llvm.nvvm.fmax.nan.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)
225   ret <2 x bfloat> %res
228 ; CHECK-LABEL: fmax_xorsign_abs_f
229 define float @fmax_xorsign_abs_f(float %0, float %1) {
230   ; CHECK-NOT: call
231   ; CHECK: max.xorsign.abs.f
232   %res = call float @llvm.nvvm.fmax.xorsign.abs.f(float %0, float %1)
233   ret float %res
236 ; CHECK-LABEL: fmax_ftz_xorsign_abs_f
237 define float @fmax_ftz_xorsign_abs_f(float %0, float %1) {
238   ; CHECK-NOT: call
239   ; CHECK: max.ftz.xorsign.abs.f
240   %res = call float @llvm.nvvm.fmax.ftz.xorsign.abs.f(float %0, float %1)
241   ret float %res
244 ; CHECK-LABEL: fmax_nan_xorsign_abs_f
245 define float @fmax_nan_xorsign_abs_f(float %0, float %1) {
246   ; CHECK-NOT: call
247   ; CHECK: max.NaN.xorsign.abs.f
248   %res = call float @llvm.nvvm.fmax.nan.xorsign.abs.f(float %0, float %1)
249   ret float %res
252 ; CHECK-LABEL: fmax_ftz_nan_xorsign_abs_f
253 define float @fmax_ftz_nan_xorsign_abs_f(float %0, float %1) {
254   ; CHECK-NOT: call
255   ; CHECK: max.ftz.NaN.xorsign.abs.f
256   %res = call float @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f(float %0, float %1)
257   ret float %res