brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.7 KiB · 0e3ac82 Raw
293 lines · plain
1; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_86 -mattr=+ptx72 | FileCheck %s2; RUN: %if ptxas-sm_86 && ptxas-isa-7.2 %{ llc < %s -mtriple=nvptx64 -mcpu=sm_86 -mattr=+ptx72 | %ptxas-verify -arch=sm_86 %}3 4declare half @llvm.nvvm.fmin.xorsign.abs.f16(half, half)5declare half @llvm.nvvm.fmin.ftz.xorsign.abs.f16(half, half)6declare half @llvm.nvvm.fmin.nan.xorsign.abs.f16(half, half)7declare half @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f16(half, half)8declare <2 x half> @llvm.nvvm.fmin.xorsign.abs.f16x2(<2 x half> , <2 x half>)9declare <2 x half> @llvm.nvvm.fmin.ftz.xorsign.abs.f16x2(<2 x half> , <2 x half>)10declare <2 x half> @llvm.nvvm.fmin.nan.xorsign.abs.f16x2(<2 x half> , <2 x half>)11declare <2 x half> @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f16x2(<2 x half> , <2 x half>)12declare bfloat @llvm.nvvm.fmin.xorsign.abs.bf16(bfloat, bfloat)13declare bfloat @llvm.nvvm.fmin.nan.xorsign.abs.bf16(bfloat, bfloat)14declare <2 x bfloat> @llvm.nvvm.fmin.xorsign.abs.bf16x2(<2 x bfloat>, <2 x bfloat>)15declare <2 x bfloat> @llvm.nvvm.fmin.nan.xorsign.abs.bf16x2(<2 x bfloat>, <2 x bfloat>)16declare float @llvm.nvvm.fmin.xorsign.abs.f(float, float)17declare float @llvm.nvvm.fmin.ftz.xorsign.abs.f(float, float)18declare float @llvm.nvvm.fmin.nan.xorsign.abs.f(float, float)19declare float @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f(float, float)20 21declare half @llvm.nvvm.fmax.xorsign.abs.f16(half, half)22declare half @llvm.nvvm.fmax.ftz.xorsign.abs.f16(half, half)23declare half @llvm.nvvm.fmax.nan.xorsign.abs.f16(half, half)24declare half @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f16(half, half)25declare <2 x half> @llvm.nvvm.fmax.xorsign.abs.f16x2(<2 x half> , <2 x half>)26declare <2 x half> @llvm.nvvm.fmax.ftz.xorsign.abs.f16x2(<2 x half> , <2 x half>)27declare <2 x half> @llvm.nvvm.fmax.nan.xorsign.abs.f16x2(<2 x half> , <2 x half>)28declare <2 x half> @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f16x2(<2 x half> , <2 x half>)29declare bfloat @llvm.nvvm.fmax.xorsign.abs.bf16(bfloat, bfloat)30declare bfloat @llvm.nvvm.fmax.nan.xorsign.abs.bf16(bfloat, bfloat)31declare <2 x bfloat> @llvm.nvvm.fmax.xorsign.abs.bf16x2(<2 x bfloat>, <2 x bfloat>)32declare <2 x bfloat> @llvm.nvvm.fmax.nan.xorsign.abs.bf16x2(<2 x bfloat>, <2 x bfloat>)33declare float @llvm.nvvm.fmax.xorsign.abs.f(float, float)34declare float @llvm.nvvm.fmax.ftz.xorsign.abs.f(float, float)35declare float @llvm.nvvm.fmax.nan.xorsign.abs.f(float, float)36declare float @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f(float, float)37 38; CHECK-LABEL: fmin_xorsign_abs_f1639define half @fmin_xorsign_abs_f16(half %0, half %1) {40  ; CHECK-NOT: call41  ; CHECK: min.xorsign.abs.f1642  %res = call half @llvm.nvvm.fmin.xorsign.abs.f16(half %0, half %1)43  ret half %res44}45 46; CHECK-LABEL: fmin_ftz_xorsign_abs_f1647define half @fmin_ftz_xorsign_abs_f16(half %0, half %1) {48  ; CHECK-NOT: call49  ; CHECK: min.ftz.xorsign.abs.f1650  %res = call half @llvm.nvvm.fmin.ftz.xorsign.abs.f16(half %0, half %1)51  ret half %res52}53 54; CHECK-LABEL: fmin_nan_xorsign_abs_f1655define half @fmin_nan_xorsign_abs_f16(half %0, half %1) {56  ; CHECK-NOT: call57  ; CHECK: min.NaN.xorsign.abs.f1658  %res = call half @llvm.nvvm.fmin.nan.xorsign.abs.f16(half %0, half %1)59  ret half %res60}61 62; CHECK-LABEL: fmin_ftz_nan_xorsign_abs_f1663define half @fmin_ftz_nan_xorsign_abs_f16(half %0, half %1) {64  ; CHECK-NOT: call65  ; CHECK: min.ftz.NaN.xorsign.abs.f1666  %res = call half @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f16(half %0, half %1)67  ret half %res68}69 70; CHECK-LABEL: fmin_xorsign_abs_f16x271define <2 x half> @fmin_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {72  ; CHECK-NOT: call73  ; CHECK: min.xorsign.abs.f16x274  %res = call <2 x half> @llvm.nvvm.fmin.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)75  ret <2 x half> %res76}77 78; CHECK-LABEL: fmin_ftz_xorsign_abs_f16x279define <2 x half> @fmin_ftz_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {80  ; CHECK-NOT: call81  ; CHECK: min.ftz.xorsign.abs.f16x282  %res = call <2 x half> @llvm.nvvm.fmin.ftz.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)83  ret <2 x half> %res84}85 86; CHECK-LABEL: fmin_nan_xorsign_abs_f16x287define <2 x half> @fmin_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {88  ; CHECK-NOT: call89  ; CHECK: min.NaN.xorsign.abs.f16x290  %res = call <2 x half> @llvm.nvvm.fmin.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)91  ret <2 x half> %res92}93 94; CHECK-LABEL: fmin_ftz_nan_xorsign_abs_f16x295define <2 x half> @fmin_ftz_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {96  ; CHECK-NOT: call97  ; CHECK: min.ftz.NaN.xorsign.abs.f16x298  %res = call <2 x half> @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)99  ret <2 x half> %res100}101 102; CHECK-LABEL: fmin_xorsign_abs_bf16103define bfloat @fmin_xorsign_abs_bf16(bfloat %0, bfloat %1) {104  ; CHECK-NOT: call105  ; CHECK: min.xorsign.abs.bf16106  %res = call bfloat @llvm.nvvm.fmin.xorsign.abs.bf16(bfloat %0, bfloat %1)107  ret bfloat %res108}109 110; CHECK-LABEL: fmin_nan_xorsign_abs_bf16111define bfloat @fmin_nan_xorsign_abs_bf16(bfloat %0, bfloat %1) {112  ; CHECK-NOT: call113  ; CHECK: min.NaN.xorsign.abs.bf16114  %res = call bfloat @llvm.nvvm.fmin.nan.xorsign.abs.bf16(bfloat %0, bfloat %1)115  ret bfloat %res116}117 118; CHECK-LABEL: fmin_xorsign_abs_bf16x2119define <2 x bfloat> @fmin_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {120  ; CHECK-NOT: call121  ; CHECK: min.xorsign.abs.bf16x2122  %res = call <2 x bfloat> @llvm.nvvm.fmin.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)123  ret <2 x bfloat> %res124}125 126; CHECK-LABEL: fmin_nan_xorsign_abs_bf16x2127define <2 x bfloat> @fmin_nan_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {128  ; CHECK-NOT: call129  ; CHECK: min.NaN.xorsign.abs.bf16x2130  %res = call <2 x bfloat> @llvm.nvvm.fmin.nan.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)131  ret <2 x bfloat> %res132}133 134; CHECK-LABEL: fmin_xorsign_abs_f135define float @fmin_xorsign_abs_f(float %0, float %1) {136  ; CHECK-NOT: call137  ; CHECK: min.xorsign.abs.f138  %res = call float @llvm.nvvm.fmin.xorsign.abs.f(float %0, float %1)139  ret float %res140}141 142; CHECK-LABEL: fmin_ftz_xorsign_abs_f143define float @fmin_ftz_xorsign_abs_f(float %0, float %1) {144  ; CHECK-NOT: call145  ; CHECK: min.ftz.xorsign.abs.f146  %res = call float @llvm.nvvm.fmin.ftz.xorsign.abs.f(float %0, float %1)147  ret float %res148}149 150; CHECK-LABEL: fmin_nan_xorsign_abs_f151define float @fmin_nan_xorsign_abs_f(float %0, float %1) {152  ; CHECK-NOT: call153  ; CHECK: min.NaN.xorsign.abs.f154  %res = call float @llvm.nvvm.fmin.nan.xorsign.abs.f(float %0, float %1)155  ret float %res156}157 158; CHECK-LABEL: fmin_ftz_nan_xorsign_abs_f159define float @fmin_ftz_nan_xorsign_abs_f(float %0, float %1) {160  ; CHECK-NOT: call161  ; CHECK: min.ftz.NaN.xorsign.abs.f162  %res = call float @llvm.nvvm.fmin.ftz.nan.xorsign.abs.f(float %0, float %1)163  ret float %res164}165 166; CHECK-LABEL: fmax_xorsign_abs_f16167define half @fmax_xorsign_abs_f16(half %0, half %1) {168  ; CHECK-NOT: call169  ; CHECK: max.xorsign.abs.f16170  %res = call half @llvm.nvvm.fmax.xorsign.abs.f16(half %0, half %1)171  ret half %res172}173 174; CHECK-LABEL: fmax_ftz_xorsign_abs_f16175define half @fmax_ftz_xorsign_abs_f16(half %0, half %1) {176  ; CHECK-NOT: call177  ; CHECK: max.ftz.xorsign.abs.f16178  %res = call half @llvm.nvvm.fmax.ftz.xorsign.abs.f16(half %0, half %1)179  ret half %res180}181 182; CHECK-LABEL: fmax_nan_xorsign_abs_f16183define half @fmax_nan_xorsign_abs_f16(half %0, half %1) {184  ; CHECK-NOT: call185  ; CHECK: max.NaN.xorsign.abs.f16186  %res = call half @llvm.nvvm.fmax.nan.xorsign.abs.f16(half %0, half %1)187  ret half %res188}189 190; CHECK-LABEL: fmax_ftz_nan_xorsign_abs_f16191define half @fmax_ftz_nan_xorsign_abs_f16(half %0, half %1) {192  ; CHECK-NOT: call193  ; CHECK: max.ftz.NaN.xorsign.abs.f16194  %res = call half @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f16(half %0, half %1)195  ret half %res196}197 198; CHECK-LABEL: fmax_xorsign_abs_f16x2199define <2 x half> @fmax_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {200  ; CHECK-NOT: call201  ; CHECK: max.xorsign.abs.f16x2202  %res = call <2 x half> @llvm.nvvm.fmax.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)203  ret <2 x half> %res204}205 206; CHECK-LABEL: fmax_ftz_xorsign_abs_f16x2207define <2 x half> @fmax_ftz_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {208  ; CHECK-NOT: call209  ; CHECK: max.ftz.xorsign.abs.f16x2210  %res = call <2 x half> @llvm.nvvm.fmax.ftz.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)211  ret <2 x half> %res212}213 214; CHECK-LABEL: fmax_nan_xorsign_abs_f16x2215define <2 x half> @fmax_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {216  ; CHECK-NOT: call217  ; CHECK: max.NaN.xorsign.abs.f16x2218  %res = call <2 x half> @llvm.nvvm.fmax.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)219  ret <2 x half> %res220}221 222; CHECK-LABEL: fmax_ftz_nan_xorsign_abs_f16x2223define <2 x half> @fmax_ftz_nan_xorsign_abs_f16x2(<2 x half> %0, <2 x half> %1) {224  ; CHECK-NOT: call225  ; CHECK: max.ftz.NaN.xorsign.abs.f16x2226  %res = call <2 x half> @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f16x2(<2 x half> %0, <2 x half> %1)227  ret <2 x half> %res228}229 230; CHECK-LABEL: fmax_xorsign_abs_bf16231define bfloat @fmax_xorsign_abs_bf16(bfloat %0, bfloat %1) {232  ; CHECK-NOT: call233  ; CHECK: max.xorsign.abs.bf16234  %res = call bfloat @llvm.nvvm.fmax.xorsign.abs.bf16(bfloat %0, bfloat %1)235  ret bfloat %res236}237 238; CHECK-LABEL: fmax_nan_xorsign_abs_bf16239define bfloat @fmax_nan_xorsign_abs_bf16(bfloat %0, bfloat %1) {240  ; CHECK-NOT: call241  ; CHECK: max.NaN.xorsign.abs.bf16242  %res = call bfloat @llvm.nvvm.fmax.nan.xorsign.abs.bf16(bfloat %0, bfloat %1)243  ret bfloat %res244}245 246; CHECK-LABEL: fmax_xorsign_abs_bf16x2247define <2 x bfloat> @fmax_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {248  ; CHECK-NOT: call249  ; CHECK: max.xorsign.abs.bf16x2250  %res = call <2 x bfloat> @llvm.nvvm.fmax.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)251  ret <2 x bfloat> %res252}253 254; CHECK-LABEL: fmax_nan_xorsign_abs_bf16x2255define <2 x bfloat> @fmax_nan_xorsign_abs_bf16x2(<2 x bfloat> %0, <2 x bfloat> %1) {256  ; CHECK-NOT: call257  ; CHECK: max.NaN.xorsign.abs.bf16x2258  %res = call <2 x bfloat> @llvm.nvvm.fmax.nan.xorsign.abs.bf16x2(<2 x bfloat> %0, <2 x bfloat> %1)259  ret <2 x bfloat> %res260}261 262; CHECK-LABEL: fmax_xorsign_abs_f263define float @fmax_xorsign_abs_f(float %0, float %1) {264  ; CHECK-NOT: call265  ; CHECK: max.xorsign.abs.f266  %res = call float @llvm.nvvm.fmax.xorsign.abs.f(float %0, float %1)267  ret float %res268}269 270; CHECK-LABEL: fmax_ftz_xorsign_abs_f271define float @fmax_ftz_xorsign_abs_f(float %0, float %1) {272  ; CHECK-NOT: call273  ; CHECK: max.ftz.xorsign.abs.f274  %res = call float @llvm.nvvm.fmax.ftz.xorsign.abs.f(float %0, float %1)275  ret float %res276}277 278; CHECK-LABEL: fmax_nan_xorsign_abs_f279define float @fmax_nan_xorsign_abs_f(float %0, float %1) {280  ; CHECK-NOT: call281  ; CHECK: max.NaN.xorsign.abs.f282  %res = call float @llvm.nvvm.fmax.nan.xorsign.abs.f(float %0, float %1)283  ret float %res284}285 286; CHECK-LABEL: fmax_ftz_nan_xorsign_abs_f287define float @fmax_ftz_nan_xorsign_abs_f(float %0, float %1) {288  ; CHECK-NOT: call289  ; CHECK: max.ftz.NaN.xorsign.abs.f290  %res = call float @llvm.nvvm.fmax.ftz.nan.xorsign.abs.f(float %0, float %1)291  ret float %res292}293