brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 928535d Raw
243 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -target-abi ilp32f -mattr=+zfa,+zfh < %s \3; RUN:     | FileCheck %s4; RUN: llc -mtriple=riscv64 -target-abi lp64f -mattr=+zfa,+zfh < %s \5; RUN:     | FileCheck %s6; RUN: llc -mtriple=riscv32 -target-abi ilp32f -mattr=+zfa,+zfhmin < %s \7; RUN:     | FileCheck %s --check-prefix=ZFHMIN8; RUN: llc -mtriple=riscv64 -target-abi lp64f -mattr=+zfa,+zfhmin < %s \9; RUN:     | FileCheck %s --check-prefix=ZFHMIN10 11define half @loadfpimm1() {12; CHECK-LABEL: loadfpimm1:13; CHECK:       # %bb.0:14; CHECK-NEXT:    fli.h fa0, 0.062515; CHECK-NEXT:    ret16;17; ZFHMIN-LABEL: loadfpimm1:18; ZFHMIN:       # %bb.0:19; ZFHMIN-NEXT:    li a0, 1120; ZFHMIN-NEXT:    slli a0, a0, 1021; ZFHMIN-NEXT:    fmv.h.x fa0, a022; ZFHMIN-NEXT:    ret23  ret half 0.062524}25 26define half @loadfpimm2() {27; CHECK-LABEL: loadfpimm2:28; CHECK:       # %bb.0:29; CHECK-NEXT:    fli.h fa0, 0.7530; CHECK-NEXT:    ret31;32; ZFHMIN-LABEL: loadfpimm2:33; ZFHMIN:       # %bb.0:34; ZFHMIN-NEXT:    li a0, 2935; ZFHMIN-NEXT:    slli a0, a0, 936; ZFHMIN-NEXT:    fmv.h.x fa0, a037; ZFHMIN-NEXT:    ret38  ret half 0.7539}40 41define half @loadfpimm3() {42; CHECK-LABEL: loadfpimm3:43; CHECK:       # %bb.0:44; CHECK-NEXT:    fli.h fa0, 1.2545; CHECK-NEXT:    ret46;47; ZFHMIN-LABEL: loadfpimm3:48; ZFHMIN:       # %bb.0:49; ZFHMIN-NEXT:    lui a0, 450; ZFHMIN-NEXT:    addi a0, a0, -76851; ZFHMIN-NEXT:    fmv.h.x fa0, a052; ZFHMIN-NEXT:    ret53  ret half 1.2554}55 56define half @loadfpimm4() {57; CHECK-LABEL: loadfpimm4:58; CHECK:       # %bb.0:59; CHECK-NEXT:    fli.h fa0, 3.060; CHECK-NEXT:    ret61;62; ZFHMIN-LABEL: loadfpimm4:63; ZFHMIN:       # %bb.0:64; ZFHMIN-NEXT:    lui a0, 465; ZFHMIN-NEXT:    addi a0, a0, 51266; ZFHMIN-NEXT:    fmv.h.x fa0, a067; ZFHMIN-NEXT:    ret68  ret half 3.069}70 71define half @loadfpimm5() {72; CHECK-LABEL: loadfpimm5:73; CHECK:       # %bb.0:74; CHECK-NEXT:    fli.h fa0, 256.075; CHECK-NEXT:    ret76;77; ZFHMIN-LABEL: loadfpimm5:78; ZFHMIN:       # %bb.0:79; ZFHMIN-NEXT:    li a0, 2380; ZFHMIN-NEXT:    slli a0, a0, 1081; ZFHMIN-NEXT:    fmv.h.x fa0, a082; ZFHMIN-NEXT:    ret83  ret half 256.084}85 86define half @loadfpimm6() {87; CHECK-LABEL: loadfpimm6:88; CHECK:       # %bb.0:89; CHECK-NEXT:    fli.h fa0, inf90; CHECK-NEXT:    ret91;92; ZFHMIN-LABEL: loadfpimm6:93; ZFHMIN:       # %bb.0:94; ZFHMIN-NEXT:    li a0, 3195; ZFHMIN-NEXT:    slli a0, a0, 1096; ZFHMIN-NEXT:    fmv.h.x fa0, a097; ZFHMIN-NEXT:    ret98  ret half 0xH7C0099}100 101define half @loadfpimm7() {102; CHECK-LABEL: loadfpimm7:103; CHECK:       # %bb.0:104; CHECK-NEXT:    fli.h fa0, nan105; CHECK-NEXT:    ret106;107; ZFHMIN-LABEL: loadfpimm7:108; ZFHMIN:       # %bb.0:109; ZFHMIN-NEXT:    lui a0, 8110; ZFHMIN-NEXT:    addi a0, a0, -512111; ZFHMIN-NEXT:    fmv.h.x fa0, a0112; ZFHMIN-NEXT:    ret113  ret half 0xH7E00114}115 116define half @loadfpimm8() {117; CHECK-LABEL: loadfpimm8:118; CHECK:       # %bb.0:119; CHECK-NEXT:    fli.h fa0, min120; CHECK-NEXT:    ret121;122; ZFHMIN-LABEL: loadfpimm8:123; ZFHMIN:       # %bb.0:124; ZFHMIN-NEXT:    li a0, 1024125; ZFHMIN-NEXT:    fmv.h.x fa0, a0126; ZFHMIN-NEXT:    ret127  ret half 0xH0400128}129 130define half @loadfpimm9() {131; CHECK-LABEL: loadfpimm9:132; CHECK:       # %bb.0:133; CHECK-NEXT:    lui a0, 6134; CHECK-NEXT:    addi a0, a0, -1032135; CHECK-NEXT:    fmv.h.x fa0, a0136; CHECK-NEXT:    ret137;138; ZFHMIN-LABEL: loadfpimm9:139; ZFHMIN:       # %bb.0:140; ZFHMIN-NEXT:    lui a0, 6141; ZFHMIN-NEXT:    addi a0, a0, -1032142; ZFHMIN-NEXT:    fmv.h.x fa0, a0143; ZFHMIN-NEXT:    ret144  ret half 255.0145}146 147; This is 1 * 2^-16148define half @loadfpimm10() {149; CHECK-LABEL: loadfpimm10:150; CHECK:       # %bb.0:151; CHECK-NEXT:    fli.h fa0, 1.52587890625e-05152; CHECK-NEXT:    ret153;154; ZFHMIN-LABEL: loadfpimm10:155; ZFHMIN:       # %bb.0:156; ZFHMIN-NEXT:    li a0, 256157; ZFHMIN-NEXT:    fmv.h.x fa0, a0158; ZFHMIN-NEXT:    ret159  ret half 0xH0100160}161 162; This is 1 * 2^-15163define half @loadfpimm11() {164; CHECK-LABEL: loadfpimm11:165; CHECK:       # %bb.0:166; CHECK-NEXT:    fli.h fa0, 3.0517578125e-05167; CHECK-NEXT:    ret168;169; ZFHMIN-LABEL: loadfpimm11:170; ZFHMIN:       # %bb.0:171; ZFHMIN-NEXT:    li a0, 512172; ZFHMIN-NEXT:    fmv.h.x fa0, a0173; ZFHMIN-NEXT:    ret174  ret half 0xH0200175}176 177; Negative test. This is an snan with payload of 1.178define half @loadfpimm12() {179; CHECK-LABEL: loadfpimm12:180; CHECK:       # %bb.0:181; CHECK-NEXT:    lui a0, 8182; CHECK-NEXT:    addi a0, a0, -1023183; CHECK-NEXT:    fmv.h.x fa0, a0184; CHECK-NEXT:    ret185;186; ZFHMIN-LABEL: loadfpimm12:187; ZFHMIN:       # %bb.0:188; ZFHMIN-NEXT:    lui a0, 8189; ZFHMIN-NEXT:    addi a0, a0, -1023190; ZFHMIN-NEXT:    fmv.h.x fa0, a0191; ZFHMIN-NEXT:    ret192  ret half 0xH7c01193}194 195define half @loadfpimm13() {196; CHECK-LABEL: loadfpimm13:197; CHECK:       # %bb.0:198; CHECK-NEXT:    fli.h fa0, -1.0199; CHECK-NEXT:    ret200;201; ZFHMIN-LABEL: loadfpimm13:202; ZFHMIN:       # %bb.0:203; ZFHMIN-NEXT:    li a0, -17204; ZFHMIN-NEXT:    slli a0, a0, 10205; ZFHMIN-NEXT:    fmv.h.x fa0, a0206; ZFHMIN-NEXT:    ret207  ret half -1.0208}209 210; Ensure fli isn't directly used for negated versions of numbers in the fli211; table.212define half @loadfpimm14() {213; CHECK-LABEL: loadfpimm14:214; CHECK:       # %bb.0:215; CHECK-NEXT:    fli.h fa5, 2.0216; CHECK-NEXT:    fneg.h fa0, fa5217; CHECK-NEXT:    ret218;219; ZFHMIN-LABEL: loadfpimm14:220; ZFHMIN:       # %bb.0:221; ZFHMIN-NEXT:    lui a0, 1048572222; ZFHMIN-NEXT:    fmv.h.x fa0, a0223; ZFHMIN-NEXT:    ret224  ret half -2.0225}226 227; Ensure fli isn't directly used for negative min normal value.228define half @loadfpimm15() {229; CHECK-LABEL: loadfpimm15:230; CHECK:       # %bb.0:231; CHECK-NEXT:    fli.h fa5, min232; CHECK-NEXT:    fneg.h fa0, fa5233; CHECK-NEXT:    ret234;235; ZFHMIN-LABEL: loadfpimm15:236; ZFHMIN:       # %bb.0:237; ZFHMIN-NEXT:    li a0, -31238; ZFHMIN-NEXT:    slli a0, a0, 10239; ZFHMIN-NEXT:    fmv.h.x fa0, a0240; ZFHMIN-NEXT:    ret241  ret half 0xH8400242}243