brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.2 KiB · 23ca199 Raw
189 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zfh \3; RUN:   -verify-machineinstrs -target-abi ilp32f | \4; RUN:   FileCheck -check-prefixes=CHECKIZFH %s5; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zfh \6; RUN:   -verify-machineinstrs -target-abi lp64f | \7; RUN:   FileCheck -check-prefixes=CHECKIZFH %s8; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zhinx \9; RUN:   -verify-machineinstrs -target-abi ilp32 | \10; RUN:   FileCheck -check-prefixes=CHECKIZHINX %s11; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zhinx \12; RUN:   -verify-machineinstrs -target-abi lp64 | \13; RUN:   FileCheck -check-prefixes=CHECKIZHINX %s14 15define half @fminimum_f16(half %a, half %b) nounwind {16; CHECKIZFH-LABEL: fminimum_f16:17; CHECKIZFH:       # %bb.0:18; CHECKIZFH-NEXT:    feq.h a0, fa0, fa019; CHECKIZFH-NEXT:    fmv.h fa5, fa120; CHECKIZFH-NEXT:    beqz a0, .LBB0_321; CHECKIZFH-NEXT:  # %bb.1:22; CHECKIZFH-NEXT:    feq.h a0, fa1, fa123; CHECKIZFH-NEXT:    beqz a0, .LBB0_424; CHECKIZFH-NEXT:  .LBB0_2:25; CHECKIZFH-NEXT:    fmin.h fa0, fa0, fa526; CHECKIZFH-NEXT:    ret27; CHECKIZFH-NEXT:  .LBB0_3:28; CHECKIZFH-NEXT:    fmv.h fa5, fa029; CHECKIZFH-NEXT:    feq.h a0, fa1, fa130; CHECKIZFH-NEXT:    bnez a0, .LBB0_231; CHECKIZFH-NEXT:  .LBB0_4:32; CHECKIZFH-NEXT:    fmin.h fa0, fa1, fa533; CHECKIZFH-NEXT:    ret34;35; CHECKIZHINX-LABEL: fminimum_f16:36; CHECKIZHINX:       # %bb.0:37; CHECKIZHINX-NEXT:    feq.h a3, a0, a038; CHECKIZHINX-NEXT:    mv a2, a139; CHECKIZHINX-NEXT:    beqz a3, .LBB0_340; CHECKIZHINX-NEXT:  # %bb.1:41; CHECKIZHINX-NEXT:    feq.h a3, a1, a142; CHECKIZHINX-NEXT:    beqz a3, .LBB0_443; CHECKIZHINX-NEXT:  .LBB0_2:44; CHECKIZHINX-NEXT:    fmin.h a0, a0, a245; CHECKIZHINX-NEXT:    ret46; CHECKIZHINX-NEXT:  .LBB0_3:47; CHECKIZHINX-NEXT:    mv a2, a048; CHECKIZHINX-NEXT:    feq.h a3, a1, a149; CHECKIZHINX-NEXT:    bnez a3, .LBB0_250; CHECKIZHINX-NEXT:  .LBB0_4:51; CHECKIZHINX-NEXT:    fmin.h a0, a1, a252; CHECKIZHINX-NEXT:    ret53  %1 = call half @llvm.minimum.f16(half %a, half %b)54  ret half %155}56 57define half @fmaximum_f16(half %a, half %b) nounwind {58; CHECKIZFH-LABEL: fmaximum_f16:59; CHECKIZFH:       # %bb.0:60; CHECKIZFH-NEXT:    feq.h a0, fa0, fa061; CHECKIZFH-NEXT:    fmv.h fa5, fa162; CHECKIZFH-NEXT:    beqz a0, .LBB1_363; CHECKIZFH-NEXT:  # %bb.1:64; CHECKIZFH-NEXT:    feq.h a0, fa1, fa165; CHECKIZFH-NEXT:    beqz a0, .LBB1_466; CHECKIZFH-NEXT:  .LBB1_2:67; CHECKIZFH-NEXT:    fmax.h fa0, fa0, fa568; CHECKIZFH-NEXT:    ret69; CHECKIZFH-NEXT:  .LBB1_3:70; CHECKIZFH-NEXT:    fmv.h fa5, fa071; CHECKIZFH-NEXT:    feq.h a0, fa1, fa172; CHECKIZFH-NEXT:    bnez a0, .LBB1_273; CHECKIZFH-NEXT:  .LBB1_4:74; CHECKIZFH-NEXT:    fmax.h fa0, fa1, fa575; CHECKIZFH-NEXT:    ret76;77; CHECKIZHINX-LABEL: fmaximum_f16:78; CHECKIZHINX:       # %bb.0:79; CHECKIZHINX-NEXT:    feq.h a3, a0, a080; CHECKIZHINX-NEXT:    mv a2, a181; CHECKIZHINX-NEXT:    beqz a3, .LBB1_382; CHECKIZHINX-NEXT:  # %bb.1:83; CHECKIZHINX-NEXT:    feq.h a3, a1, a184; CHECKIZHINX-NEXT:    beqz a3, .LBB1_485; CHECKIZHINX-NEXT:  .LBB1_2:86; CHECKIZHINX-NEXT:    fmax.h a0, a0, a287; CHECKIZHINX-NEXT:    ret88; CHECKIZHINX-NEXT:  .LBB1_3:89; CHECKIZHINX-NEXT:    mv a2, a090; CHECKIZHINX-NEXT:    feq.h a3, a1, a191; CHECKIZHINX-NEXT:    bnez a3, .LBB1_292; CHECKIZHINX-NEXT:  .LBB1_4:93; CHECKIZHINX-NEXT:    fmax.h a0, a1, a294; CHECKIZHINX-NEXT:    ret95  %1 = call half @llvm.maximum.f16(half %a, half %b)96  ret half %197}98 99define half @fminimum_nnan_f16(half %a, half %b) nounwind {100; CHECKIZFH-LABEL: fminimum_nnan_f16:101; CHECKIZFH:       # %bb.0:102; CHECKIZFH-NEXT:    fmin.h fa0, fa0, fa1103; CHECKIZFH-NEXT:    ret104;105; CHECKIZHINX-LABEL: fminimum_nnan_f16:106; CHECKIZHINX:       # %bb.0:107; CHECKIZHINX-NEXT:    fmin.h a0, a0, a1108; CHECKIZHINX-NEXT:    ret109  %1 = call nnan half @llvm.minimum.f16(half %a, half %b)110  ret half %1111}112 113define half @fmaximum_nnan_f16(half %a, half %b) nounwind {114; CHECKIZFH-LABEL: fmaximum_nnan_f16:115; CHECKIZFH:       # %bb.0:116; CHECKIZFH-NEXT:    fmax.h fa0, fa0, fa1117; CHECKIZFH-NEXT:    ret118;119; CHECKIZHINX-LABEL: fmaximum_nnan_f16:120; CHECKIZHINX:       # %bb.0:121; CHECKIZHINX-NEXT:    fmax.h a0, a0, a1122; CHECKIZHINX-NEXT:    ret123  %1 = call nnan half @llvm.maximum.f16(half %a, half %b)124  ret half %1125}126 127define half @fminimum_nnan_attr_f16(half %a, half %b) nounwind "no-nans-fp-math"="true" {128; CHECKIZFH-LABEL: fminimum_nnan_attr_f16:129; CHECKIZFH:       # %bb.0:130; CHECKIZFH-NEXT:    fmin.h fa0, fa0, fa1131; CHECKIZFH-NEXT:    ret132;133; CHECKIZHINX-LABEL: fminimum_nnan_attr_f16:134; CHECKIZHINX:       # %bb.0:135; CHECKIZHINX-NEXT:    fmin.h a0, a0, a1136; CHECKIZHINX-NEXT:    ret137  %1 = call half @llvm.minimum.f16(half %a, half %b)138  ret half %1139}140 141define half @fminimum_nnan_op_f16(half %a, half %b) nounwind {142; CHECKIZFH-LABEL: fminimum_nnan_op_f16:143; CHECKIZFH:       # %bb.0:144; CHECKIZFH-NEXT:    feq.h a0, fa0, fa0145; CHECKIZFH-NEXT:    bnez a0, .LBB5_2146; CHECKIZFH-NEXT:  # %bb.1:147; CHECKIZFH-NEXT:    fmin.h fa0, fa0, fa0148; CHECKIZFH-NEXT:    ret149; CHECKIZFH-NEXT:  .LBB5_2:150; CHECKIZFH-NEXT:    fadd.h fa5, fa0, fa0151; CHECKIZFH-NEXT:    fmin.h fa0, fa0, fa5152; CHECKIZFH-NEXT:    ret153;154; CHECKIZHINX-LABEL: fminimum_nnan_op_f16:155; CHECKIZHINX:       # %bb.0:156; CHECKIZHINX-NEXT:    feq.h a1, a0, a0157; CHECKIZHINX-NEXT:    bnez a1, .LBB5_2158; CHECKIZHINX-NEXT:  # %bb.1:159; CHECKIZHINX-NEXT:    fmin.h a0, a0, a0160; CHECKIZHINX-NEXT:    ret161; CHECKIZHINX-NEXT:  .LBB5_2:162; CHECKIZHINX-NEXT:    fadd.h a1, a0, a0163; CHECKIZHINX-NEXT:    fmin.h a0, a0, a1164; CHECKIZHINX-NEXT:    ret165  %c = fadd nnan half %a, %a166  %1 = call half @llvm.minimum.f16(half %a, half %c)167  ret half %1168}169 170define half @fmaximum_nnan_op_f16(half %a, half %b) nounwind {171; CHECKIZFH-LABEL: fmaximum_nnan_op_f16:172; CHECKIZFH:       # %bb.0:173; CHECKIZFH-NEXT:    fadd.h fa5, fa0, fa1174; CHECKIZFH-NEXT:    fsub.h fa4, fa0, fa1175; CHECKIZFH-NEXT:    fmax.h fa0, fa5, fa4176; CHECKIZFH-NEXT:    ret177;178; CHECKIZHINX-LABEL: fmaximum_nnan_op_f16:179; CHECKIZHINX:       # %bb.0:180; CHECKIZHINX-NEXT:    fadd.h a2, a0, a1181; CHECKIZHINX-NEXT:    fsub.h a0, a0, a1182; CHECKIZHINX-NEXT:    fmax.h a0, a2, a0183; CHECKIZHINX-NEXT:    ret184  %c = fadd nnan half %a, %b185  %d = fsub nnan half %a, %b186  %1 = call half @llvm.maximum.f16(half %c, half %d)187  ret half %1188}189