[llvm-branch-commits] [llvm] 1ccd361 - [RISCV] Add additional half precision fnmadd/fnmsub tests with an fneg on the second operand instead of the first.

Craig Topper via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Dec 2 21:18:44 PST 2020


Author: Craig Topper
Date: 2020-12-02T21:13:42-08:00
New Revision: 1ccd36161d54c098ecb8a6b35695844a16943043

URL: https://github.com/llvm/llvm-project/commit/1ccd36161d54c098ecb8a6b35695844a16943043
DIFF: https://github.com/llvm/llvm-project/commit/1ccd36161d54c098ecb8a6b35695844a16943043.diff

LOG: [RISCV] Add additional half precision fnmadd/fnmsub tests with an fneg on the second operand instead of the first.

This matches the float/double tests added in defe11866a326491ee9767f84bb3f70cfc4f4bcb

Added: 
    

Modified: 
    llvm/test/CodeGen/RISCV/half-arith.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/RISCV/half-arith.ll b/llvm/test/CodeGen/RISCV/half-arith.ll
index cc94f3e23cc7..ad4978e117cf 100644
--- a/llvm/test/CodeGen/RISCV/half-arith.ll
+++ b/llvm/test/CodeGen/RISCV/half-arith.ll
@@ -302,6 +302,30 @@ define half @fnmadd_s(half %a, half %b, half %c) nounwind {
   ret half %1
 }
 
+define half @fnmadd_s_2(half %a, half %b, half %c) nounwind {
+; RV32IZFH-LABEL: fnmadd_s_2:
+; RV32IZFH:       # %bb.0:
+; RV32IZFH-NEXT:    fmv.h.x ft0, zero
+; RV32IZFH-NEXT:    fadd.h ft1, fa1, ft0
+; RV32IZFH-NEXT:    fadd.h ft0, fa2, ft0
+; RV32IZFH-NEXT:    fnmadd.h fa0, ft1, fa0, ft0
+; RV32IZFH-NEXT:    ret
+;
+; RV64IZFH-LABEL: fnmadd_s_2:
+; RV64IZFH:       # %bb.0:
+; RV64IZFH-NEXT:    fmv.h.x ft0, zero
+; RV64IZFH-NEXT:    fadd.h ft1, fa1, ft0
+; RV64IZFH-NEXT:    fadd.h ft0, fa2, ft0
+; RV64IZFH-NEXT:    fnmadd.h fa0, ft1, fa0, ft0
+; RV64IZFH-NEXT:    ret
+  %b_ = fadd half 0.0, %b
+  %c_ = fadd half 0.0, %c
+  %negb = fsub half -0.0, %b_
+  %negc = fsub half -0.0, %c_
+  %1 = call half @llvm.fma.f16(half %a, half %negb, half %negc)
+  ret half %1
+}
+
 define half @fnmsub_s(half %a, half %b, half %c) nounwind {
 ; RV32IZFH-LABEL: fnmsub_s:
 ; RV32IZFH:       # %bb.0:
@@ -322,6 +346,26 @@ define half @fnmsub_s(half %a, half %b, half %c) nounwind {
   ret half %1
 }
 
+define half @fnmsub_s_2(half %a, half %b, half %c) nounwind {
+; RV32IZFH-LABEL: fnmsub_s_2:
+; RV32IZFH:       # %bb.0:
+; RV32IZFH-NEXT:    fmv.h.x ft0, zero
+; RV32IZFH-NEXT:    fadd.h ft0, fa1, ft0
+; RV32IZFH-NEXT:    fnmsub.h fa0, ft0, fa0, fa2
+; RV32IZFH-NEXT:    ret
+;
+; RV64IZFH-LABEL: fnmsub_s_2:
+; RV64IZFH:       # %bb.0:
+; RV64IZFH-NEXT:    fmv.h.x ft0, zero
+; RV64IZFH-NEXT:    fadd.h ft0, fa1, ft0
+; RV64IZFH-NEXT:    fnmsub.h fa0, ft0, fa0, fa2
+; RV64IZFH-NEXT:    ret
+  %b_ = fadd half 0.0, %b
+  %negb = fsub half -0.0, %b_
+  %1 = call half @llvm.fma.f16(half %a, half %negb, half %c)
+  ret half %1
+}
+
 define half @fmadd_s_contract(half %a, half %b, half %c) nounwind {
 ; RV32IZFH-LABEL: fmadd_s_contract:
 ; RV32IZFH:       # %bb.0:


        


More information about the llvm-branch-commits mailing list