17b50c183SMonk Chiang; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 27b50c183SMonk Chiang; RUN: llc -mtriple=riscv32 -target-abi ilp32f -mattr=+zfhmin < %s \ 37b50c183SMonk Chiang; RUN: | FileCheck --check-prefix=RV32IZFHMIN %s 47b50c183SMonk Chiang; RUN: llc -mtriple=riscv32 -target-abi ilp32d -mattr=+zfhmin,+d < %s \ 57b50c183SMonk Chiang; RUN: | FileCheck --check-prefix=RV32IDZFHMIN %s 6*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -target-abi ilp32 -mattr=+zhinxmin < %s \ 7*773b0aaaSQihan Cai; RUN: | FileCheck --check-prefix=RV32IZHINXMIN %s 8*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv32 -target-abi ilp32 -mattr=+zhinxmin,+zdinx < %s \ 9*773b0aaaSQihan Cai; RUN: | FileCheck --check-prefix=RV32IZDINXZHINXMIN %s 107b50c183SMonk Chiang; RUN: llc -mtriple=riscv64 -target-abi lp64f -mattr=+zfhmin < %s \ 117b50c183SMonk Chiang; RUN: | FileCheck --check-prefix=RV64IZFHMIN %s 127b50c183SMonk Chiang; RUN: llc -mtriple=riscv64 -target-abi lp64d -mattr=+zfhmin,+d < %s \ 137b50c183SMonk Chiang; RUN: | FileCheck --check-prefix=RV64IDZFHMIN %s 14*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -target-abi lp64 -mattr=+zhinxmin < %s \ 15*773b0aaaSQihan Cai; RUN: | FileCheck --check-prefix=RV64IZHINXMIN %s 16*773b0aaaSQihan Cai; RUN: llc -mtriple=riscv64 -target-abi lp64 -mattr=+zhinxmin,+zdinx < %s \ 17*773b0aaaSQihan Cai; RUN: | FileCheck --check-prefix=RV64IZDINXZHINXMIN %s 187b50c183SMonk Chiang 191456b686SNikita Popovdefine half @f16_positive_zero(ptr %pf) nounwind { 207b50c183SMonk Chiang; RV32IZFHMIN-LABEL: f16_positive_zero: 217b50c183SMonk Chiang; RV32IZFHMIN: # %bb.0: 227b50c183SMonk Chiang; RV32IZFHMIN-NEXT: fmv.h.x fa0, zero 237b50c183SMonk Chiang; RV32IZFHMIN-NEXT: ret 247b50c183SMonk Chiang; 257b50c183SMonk Chiang; RV32IDZFHMIN-LABEL: f16_positive_zero: 267b50c183SMonk Chiang; RV32IDZFHMIN: # %bb.0: 277b50c183SMonk Chiang; RV32IDZFHMIN-NEXT: fmv.h.x fa0, zero 287b50c183SMonk Chiang; RV32IDZFHMIN-NEXT: ret 297b50c183SMonk Chiang; 30*773b0aaaSQihan Cai; RV32IZHINXMIN-LABEL: f16_positive_zero: 31*773b0aaaSQihan Cai; RV32IZHINXMIN: # %bb.0: 32*773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: li a0, 0 33*773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: ret 34*773b0aaaSQihan Cai; 35*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN-LABEL: f16_positive_zero: 36*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN: # %bb.0: 37*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN-NEXT: li a0, 0 38*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN-NEXT: ret 39*773b0aaaSQihan Cai; 407b50c183SMonk Chiang; RV64IZFHMIN-LABEL: f16_positive_zero: 417b50c183SMonk Chiang; RV64IZFHMIN: # %bb.0: 427b50c183SMonk Chiang; RV64IZFHMIN-NEXT: fmv.h.x fa0, zero 437b50c183SMonk Chiang; RV64IZFHMIN-NEXT: ret 447b50c183SMonk Chiang; 457b50c183SMonk Chiang; RV64IDZFHMIN-LABEL: f16_positive_zero: 467b50c183SMonk Chiang; RV64IDZFHMIN: # %bb.0: 477b50c183SMonk Chiang; RV64IDZFHMIN-NEXT: fmv.h.x fa0, zero 487b50c183SMonk Chiang; RV64IDZFHMIN-NEXT: ret 49*773b0aaaSQihan Cai; 50*773b0aaaSQihan Cai; RV64IZHINXMIN-LABEL: f16_positive_zero: 51*773b0aaaSQihan Cai; RV64IZHINXMIN: # %bb.0: 52*773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: li a0, 0 53*773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: ret 54*773b0aaaSQihan Cai; 55*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN-LABEL: f16_positive_zero: 56*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN: # %bb.0: 57*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN-NEXT: li a0, 0 58*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN-NEXT: ret 597b50c183SMonk Chiang ret half 0.0 607b50c183SMonk Chiang} 617b50c183SMonk Chiang 621456b686SNikita Popovdefine half @f16_negative_zero(ptr %pf) nounwind { 637b50c183SMonk Chiang; RV32IZFHMIN-LABEL: f16_negative_zero: 647b50c183SMonk Chiang; RV32IZFHMIN: # %bb.0: 65d02b9869SHan-Kuan Chen; RV32IZFHMIN-NEXT: lui a0, 1048568 66d02b9869SHan-Kuan Chen; RV32IZFHMIN-NEXT: fmv.h.x fa0, a0 677b50c183SMonk Chiang; RV32IZFHMIN-NEXT: ret 687b50c183SMonk Chiang; 697b50c183SMonk Chiang; RV32IDZFHMIN-LABEL: f16_negative_zero: 707b50c183SMonk Chiang; RV32IDZFHMIN: # %bb.0: 71d02b9869SHan-Kuan Chen; RV32IDZFHMIN-NEXT: lui a0, 1048568 72d02b9869SHan-Kuan Chen; RV32IDZFHMIN-NEXT: fmv.h.x fa0, a0 737b50c183SMonk Chiang; RV32IDZFHMIN-NEXT: ret 747b50c183SMonk Chiang; 75*773b0aaaSQihan Cai; RV32IZHINXMIN-LABEL: f16_negative_zero: 76*773b0aaaSQihan Cai; RV32IZHINXMIN: # %bb.0: 77*773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: lui a0, 1048568 78*773b0aaaSQihan Cai; RV32IZHINXMIN-NEXT: ret 79*773b0aaaSQihan Cai; 80*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN-LABEL: f16_negative_zero: 81*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN: # %bb.0: 82*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN-NEXT: lui a0, 1048568 83*773b0aaaSQihan Cai; RV32IZDINXZHINXMIN-NEXT: ret 84*773b0aaaSQihan Cai; 857b50c183SMonk Chiang; RV64IZFHMIN-LABEL: f16_negative_zero: 867b50c183SMonk Chiang; RV64IZFHMIN: # %bb.0: 87d02b9869SHan-Kuan Chen; RV64IZFHMIN-NEXT: lui a0, 1048568 88d02b9869SHan-Kuan Chen; RV64IZFHMIN-NEXT: fmv.h.x fa0, a0 897b50c183SMonk Chiang; RV64IZFHMIN-NEXT: ret 907b50c183SMonk Chiang; 917b50c183SMonk Chiang; RV64IDZFHMIN-LABEL: f16_negative_zero: 927b50c183SMonk Chiang; RV64IDZFHMIN: # %bb.0: 93d02b9869SHan-Kuan Chen; RV64IDZFHMIN-NEXT: lui a0, 1048568 94d02b9869SHan-Kuan Chen; RV64IDZFHMIN-NEXT: fmv.h.x fa0, a0 957b50c183SMonk Chiang; RV64IDZFHMIN-NEXT: ret 96*773b0aaaSQihan Cai; 97*773b0aaaSQihan Cai; RV64IZHINXMIN-LABEL: f16_negative_zero: 98*773b0aaaSQihan Cai; RV64IZHINXMIN: # %bb.0: 99*773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: lui a0, 1048568 100*773b0aaaSQihan Cai; RV64IZHINXMIN-NEXT: ret 101*773b0aaaSQihan Cai; 102*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN-LABEL: f16_negative_zero: 103*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN: # %bb.0: 104*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN-NEXT: lui a0, 1048568 105*773b0aaaSQihan Cai; RV64IZDINXZHINXMIN-NEXT: ret 1067b50c183SMonk Chiang ret half -0.0 1077b50c183SMonk Chiang} 108