74 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+zfh -verify-machineinstrs \3; RUN: -target-abi ilp32f < %s | FileCheck %s4; RUN: llc -mtriple=riscv64 -mattr=+zfh -verify-machineinstrs \5; RUN: -target-abi lp64f < %s | FileCheck %s6; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs \7; RUN: -target-abi ilp32 < %s | FileCheck -check-prefixes=CHECKIZHINX %s8; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \9; RUN: -target-abi lp64 < %s | FileCheck -check-prefixes=CHECKIZHINX %s10; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs \11; RUN: -target-abi ilp32f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s12; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs \13; RUN: -target-abi lp64f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s14; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs \15; RUN: -target-abi ilp32 < %s | FileCheck -check-prefixes=CHECKIZHINXMIN %s16; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs \17; RUN: -target-abi lp64 < %s | FileCheck -check-prefixes=CHECKIZHINXMIN %s18 19define zeroext i1 @half_is_nan(half %a) nounwind {20; CHECK-LABEL: half_is_nan:21; CHECK: # %bb.0:22; CHECK-NEXT: feq.h a0, fa0, fa023; CHECK-NEXT: xori a0, a0, 124; CHECK-NEXT: ret25;26; CHECKIZHINX-LABEL: half_is_nan:27; CHECKIZHINX: # %bb.0:28; CHECKIZHINX-NEXT: feq.h a0, a0, a029; CHECKIZHINX-NEXT: xori a0, a0, 130; CHECKIZHINX-NEXT: ret31;32; CHECKIZFHMIN-LABEL: half_is_nan:33; CHECKIZFHMIN: # %bb.0:34; CHECKIZFHMIN-NEXT: fcvt.s.h fa5, fa035; CHECKIZFHMIN-NEXT: feq.s a0, fa5, fa536; CHECKIZFHMIN-NEXT: xori a0, a0, 137; CHECKIZFHMIN-NEXT: ret38;39; CHECKIZHINXMIN-LABEL: half_is_nan:40; CHECKIZHINXMIN: # %bb.0:41; CHECKIZHINXMIN-NEXT: fcvt.s.h a0, a042; CHECKIZHINXMIN-NEXT: feq.s a0, a0, a043; CHECKIZHINXMIN-NEXT: xori a0, a0, 144; CHECKIZHINXMIN-NEXT: ret45 %1 = fcmp uno half %a, 0.000000e+0046 ret i1 %147}48 49define zeroext i1 @half_not_nan(half %a) nounwind {50; CHECK-LABEL: half_not_nan:51; CHECK: # %bb.0:52; CHECK-NEXT: feq.h a0, fa0, fa053; CHECK-NEXT: ret54;55; CHECKIZHINX-LABEL: half_not_nan:56; CHECKIZHINX: # %bb.0:57; CHECKIZHINX-NEXT: feq.h a0, a0, a058; CHECKIZHINX-NEXT: ret59;60; CHECKIZFHMIN-LABEL: half_not_nan:61; CHECKIZFHMIN: # %bb.0:62; CHECKIZFHMIN-NEXT: fcvt.s.h fa5, fa063; CHECKIZFHMIN-NEXT: feq.s a0, fa5, fa564; CHECKIZFHMIN-NEXT: ret65;66; CHECKIZHINXMIN-LABEL: half_not_nan:67; CHECKIZHINXMIN: # %bb.0:68; CHECKIZHINXMIN-NEXT: fcvt.s.h a0, a069; CHECKIZHINXMIN-NEXT: feq.s a0, a0, a070; CHECKIZHINXMIN-NEXT: ret71 %1 = fcmp ord half %a, 0.000000e+0072 ret i1 %173}74