137 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 \8; RUN: | FileCheck -check-prefixes=CHECKIZHINX %s9; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs \10; RUN: -target-abi lp64 < %s \11; RUN: | FileCheck -check-prefixes=CHECKIZHINX %s12; RUN: llc -mtriple=riscv32 -mattr=+zfhmin -verify-machineinstrs \13; RUN: -target-abi ilp32f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s14; RUN: llc -mtriple=riscv64 -mattr=+zfhmin -verify-machineinstrs \15; RUN: -target-abi lp64f < %s | FileCheck -check-prefixes=CHECKIZFHMIN %s16; RUN: llc -mtriple=riscv32 -mattr=+zhinxmin -verify-machineinstrs \17; RUN: -target-abi ilp32 < %s \18; RUN: | FileCheck -check-prefixes=CHECKIZHINXMIN %s19; RUN: llc -mtriple=riscv64 -mattr=+zhinxmin -verify-machineinstrs \20; RUN: -target-abi lp64 < %s \21; RUN: | FileCheck -check-prefixes=CHECKIZHINXMIN %s22 23define half @half_imm() nounwind {24; CHECK-LABEL: half_imm:25; CHECK: # %bb.0:26; CHECK-NEXT: lui a0, 427; CHECK-NEXT: addi a0, a0, 51228; CHECK-NEXT: fmv.h.x fa0, a029; CHECK-NEXT: ret30;31; CHECKIZHINX-LABEL: half_imm:32; CHECKIZHINX: # %bb.0:33; CHECKIZHINX-NEXT: lui a0, 434; CHECKIZHINX-NEXT: addi a0, a0, 51235; CHECKIZHINX-NEXT: # kill: def $x10_h killed $x10_h killed $x1036; CHECKIZHINX-NEXT: ret37;38; CHECKIZFHMIN-LABEL: half_imm:39; CHECKIZFHMIN: # %bb.0:40; CHECKIZFHMIN-NEXT: lui a0, 441; CHECKIZFHMIN-NEXT: addi a0, a0, 51242; CHECKIZFHMIN-NEXT: fmv.h.x fa0, a043; CHECKIZFHMIN-NEXT: ret44;45; CHECKIZHINXMIN-LABEL: half_imm:46; CHECKIZHINXMIN: # %bb.0:47; CHECKIZHINXMIN-NEXT: lui a0, 448; CHECKIZHINXMIN-NEXT: addi a0, a0, 51249; CHECKIZHINXMIN-NEXT: # kill: def $x10_h killed $x10_h killed $x1050; CHECKIZHINXMIN-NEXT: ret51 ret half 3.052}53 54define half @half_imm_op(half %a) nounwind {55; CHECK-LABEL: half_imm_op:56; CHECK: # %bb.0:57; CHECK-NEXT: li a0, 1558; CHECK-NEXT: slli a0, a0, 1059; CHECK-NEXT: fmv.h.x fa5, a060; CHECK-NEXT: fadd.h fa0, fa0, fa561; CHECK-NEXT: ret62;63; CHECKIZHINX-LABEL: half_imm_op:64; CHECKIZHINX: # %bb.0:65; CHECKIZHINX-NEXT: li a1, 1566; CHECKIZHINX-NEXT: slli a1, a1, 1067; CHECKIZHINX-NEXT: fadd.h a0, a0, a168; CHECKIZHINX-NEXT: ret69;70; CHECKIZFHMIN-LABEL: half_imm_op:71; CHECKIZFHMIN: # %bb.0:72; CHECKIZFHMIN-NEXT: fcvt.s.h fa5, fa073; CHECKIZFHMIN-NEXT: lui a0, 26009674; CHECKIZFHMIN-NEXT: fmv.w.x fa4, a075; CHECKIZFHMIN-NEXT: fadd.s fa5, fa5, fa476; CHECKIZFHMIN-NEXT: fcvt.h.s fa0, fa577; CHECKIZFHMIN-NEXT: ret78;79; CHECKIZHINXMIN-LABEL: half_imm_op:80; CHECKIZHINXMIN: # %bb.0:81; CHECKIZHINXMIN-NEXT: fcvt.s.h a0, a082; CHECKIZHINXMIN-NEXT: lui a1, 26009683; CHECKIZHINXMIN-NEXT: fadd.s a0, a0, a184; CHECKIZHINXMIN-NEXT: fcvt.h.s a0, a085; CHECKIZHINXMIN-NEXT: ret86 %1 = fadd half %a, 1.087 ret half %188}89 90define half @half_positive_zero(ptr %pf) nounwind {91; CHECK-LABEL: half_positive_zero:92; CHECK: # %bb.0:93; CHECK-NEXT: fmv.h.x fa0, zero94; CHECK-NEXT: ret95;96; CHECKIZHINX-LABEL: half_positive_zero:97; CHECKIZHINX: # %bb.0:98; CHECKIZHINX-NEXT: li a0, 099; CHECKIZHINX-NEXT: ret100;101; CHECKIZFHMIN-LABEL: half_positive_zero:102; CHECKIZFHMIN: # %bb.0:103; CHECKIZFHMIN-NEXT: fmv.h.x fa0, zero104; CHECKIZFHMIN-NEXT: ret105;106; CHECKIZHINXMIN-LABEL: half_positive_zero:107; CHECKIZHINXMIN: # %bb.0:108; CHECKIZHINXMIN-NEXT: li a0, 0109; CHECKIZHINXMIN-NEXT: ret110 ret half 0.0111}112 113define half @half_negative_zero(ptr %pf) nounwind {114; CHECK-LABEL: half_negative_zero:115; CHECK: # %bb.0:116; CHECK-NEXT: lui a0, 1048568117; CHECK-NEXT: fmv.h.x fa0, a0118; CHECK-NEXT: ret119;120; CHECKIZHINX-LABEL: half_negative_zero:121; CHECKIZHINX: # %bb.0:122; CHECKIZHINX-NEXT: lui a0, 1048568123; CHECKIZHINX-NEXT: ret124;125; CHECKIZFHMIN-LABEL: half_negative_zero:126; CHECKIZFHMIN: # %bb.0:127; CHECKIZFHMIN-NEXT: lui a0, 1048568128; CHECKIZFHMIN-NEXT: fmv.h.x fa0, a0129; CHECKIZFHMIN-NEXT: ret130;131; CHECKIZHINXMIN-LABEL: half_negative_zero:132; CHECKIZHINXMIN: # %bb.0:133; CHECKIZHINXMIN-NEXT: lui a0, 1048568134; CHECKIZHINXMIN-NEXT: ret135 ret half -0.0136}137