xref: /llvm-project/llvm/test/CodeGen/RISCV/half-isnan.ll (revision 773b0aaa49170a97b4de7968c4b6dbc7673aba23)
1f7bc7c29SHsiangkai Wang; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2a0a76feeSShao-Ce SUN; RUN: llc -mtriple=riscv32 -mattr=+zfh -verify-machineinstrs \
384bacb18SShao-Ce SUN; RUN:   -target-abi ilp32f < %s | FileCheck %s
4a0a76feeSShao-Ce SUN; RUN: llc -mtriple=riscv64 -mattr=+zfh -verify-machineinstrs \
584bacb18SShao-Ce SUN; RUN:   -target-abi lp64f < %s | FileCheck %s
6*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs \
7*773b0aaaSQihan Cai; RUN:   -target-abi ilp32 < %s | FileCheck -check-prefixes=CHECKIZHINX %s
8*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \
9*773b0aaaSQihan Cai; RUN:   -target-abi lp64 < %s | FileCheck -check-prefixes=CHECKIZHINX %s
107b50c183SMonk Chiang; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs \
117b50c183SMonk Chiang; RUN:   -target-abi ilp32f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s
127b50c183SMonk Chiang; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs \
137b50c183SMonk Chiang; RUN:   -target-abi lp64f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s
14*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs \
15*773b0aaaSQihan Cai; RUN:   -target-abi ilp32 < %s | FileCheck -check-prefixes=CHECKIZHINXMIN %s
16*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs \
17*773b0aaaSQihan Cai; RUN:   -target-abi lp64 < %s | FileCheck -check-prefixes=CHECKIZHINXMIN %s
18f7bc7c29SHsiangkai Wang
19f7bc7c29SHsiangkai Wangdefine zeroext i1 @half_is_nan(half %a) nounwind {
2084bacb18SShao-Ce SUN; CHECK-LABEL: half_is_nan:
2184bacb18SShao-Ce SUN; CHECK:       # %bb.0:
2284bacb18SShao-Ce SUN; CHECK-NEXT:    feq.h a0, fa0, fa0
2384bacb18SShao-Ce SUN; CHECK-NEXT:    xori a0, a0, 1
2484bacb18SShao-Ce SUN; CHECK-NEXT:    ret
257b50c183SMonk Chiang;
26*773b0aaaSQihan Cai; CHECKIZHINX-LABEL: half_is_nan:
27*773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
28*773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    feq.h a0, a0, a0
29*773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    xori a0, a0, 1
30*773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
31*773b0aaaSQihan Cai;
327b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: half_is_nan:
337b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
347b0c4184SCraig Topper; CHECKIZFHMIN-NEXT:    fcvt.s.h fa5, fa0
357b0c4184SCraig Topper; CHECKIZFHMIN-NEXT:    feq.s a0, fa5, fa5
367b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    xori a0, a0, 1
377b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
38*773b0aaaSQihan Cai;
39*773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: half_is_nan:
40*773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
41*773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    fcvt.s.h a0, a0
42*773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    feq.s a0, a0, a0
43*773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    xori a0, a0, 1
44*773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
45f7bc7c29SHsiangkai Wang  %1 = fcmp uno half %a, 0.000000e+00
46f7bc7c29SHsiangkai Wang  ret i1 %1
47f7bc7c29SHsiangkai Wang}
48f7bc7c29SHsiangkai Wang
49f7bc7c29SHsiangkai Wangdefine zeroext i1 @half_not_nan(half %a) nounwind {
5084bacb18SShao-Ce SUN; CHECK-LABEL: half_not_nan:
5184bacb18SShao-Ce SUN; CHECK:       # %bb.0:
5284bacb18SShao-Ce SUN; CHECK-NEXT:    feq.h a0, fa0, fa0
5384bacb18SShao-Ce SUN; CHECK-NEXT:    ret
547b50c183SMonk Chiang;
55*773b0aaaSQihan Cai; CHECKIZHINX-LABEL: half_not_nan:
56*773b0aaaSQihan Cai; CHECKIZHINX:       # %bb.0:
57*773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    feq.h a0, a0, a0
58*773b0aaaSQihan Cai; CHECKIZHINX-NEXT:    ret
59*773b0aaaSQihan Cai;
607b50c183SMonk Chiang; CHECKIZFHMIN-LABEL: half_not_nan:
617b50c183SMonk Chiang; CHECKIZFHMIN:       # %bb.0:
627b0c4184SCraig Topper; CHECKIZFHMIN-NEXT:    fcvt.s.h fa5, fa0
637b0c4184SCraig Topper; CHECKIZFHMIN-NEXT:    feq.s a0, fa5, fa5
647b50c183SMonk Chiang; CHECKIZFHMIN-NEXT:    ret
65*773b0aaaSQihan Cai;
66*773b0aaaSQihan Cai; CHECKIZHINXMIN-LABEL: half_not_nan:
67*773b0aaaSQihan Cai; CHECKIZHINXMIN:       # %bb.0:
68*773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    fcvt.s.h a0, a0
69*773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    feq.s a0, a0, a0
70*773b0aaaSQihan Cai; CHECKIZHINXMIN-NEXT:    ret
71f7bc7c29SHsiangkai Wang  %1 = fcmp ord half %a, 0.000000e+00
72f7bc7c29SHsiangkai Wang  ret i1 %1
73f7bc7c29SHsiangkai Wang}
74