@@ -2862,123 +2862,3 @@ define i1 @isnan_d_fpclass(half %x) {
28622862 %1 = call i1 @llvm.is.fpclass.f16 (half %x , i32 3 ) ; nan
28632863 ret i1 %1
28642864}
2865-
2866- declare half @llvm.tan.f16 (half )
2867-
2868- define half @tan_f16 (half %a ) nounwind {
2869- ; RV32IZFH-LABEL: tan_f16:
2870- ; RV32IZFH: # %bb.0:
2871- ; RV32IZFH-NEXT: addi sp, sp, -16
2872- ; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2873- ; RV32IZFH-NEXT: fcvt.s.h fa0, fa0
2874- ; RV32IZFH-NEXT: call tanf
2875- ; RV32IZFH-NEXT: fcvt.h.s fa0, fa0
2876- ; RV32IZFH-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2877- ; RV32IZFH-NEXT: addi sp, sp, 16
2878- ; RV32IZFH-NEXT: ret
2879- ;
2880- ; RV64IZFH-LABEL: tan_f16:
2881- ; RV64IZFH: # %bb.0:
2882- ; RV64IZFH-NEXT: addi sp, sp, -16
2883- ; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2884- ; RV64IZFH-NEXT: fcvt.s.h fa0, fa0
2885- ; RV64IZFH-NEXT: call tanf
2886- ; RV64IZFH-NEXT: fcvt.h.s fa0, fa0
2887- ; RV64IZFH-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2888- ; RV64IZFH-NEXT: addi sp, sp, 16
2889- ; RV64IZFH-NEXT: ret
2890- ;
2891- ; RV32IZHINX-LABEL: tan_f16:
2892- ; RV32IZHINX: # %bb.0:
2893- ; RV32IZHINX-NEXT: addi sp, sp, -16
2894- ; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2895- ; RV32IZHINX-NEXT: fcvt.s.h a0, a0
2896- ; RV32IZHINX-NEXT: call tanf
2897- ; RV32IZHINX-NEXT: fcvt.h.s a0, a0
2898- ; RV32IZHINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2899- ; RV32IZHINX-NEXT: addi sp, sp, 16
2900- ; RV32IZHINX-NEXT: ret
2901- ;
2902- ; RV64IZHINX-LABEL: tan_f16:
2903- ; RV64IZHINX: # %bb.0:
2904- ; RV64IZHINX-NEXT: addi sp, sp, -16
2905- ; RV64IZHINX-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2906- ; RV64IZHINX-NEXT: fcvt.s.h a0, a0
2907- ; RV64IZHINX-NEXT: call tanf
2908- ; RV64IZHINX-NEXT: fcvt.h.s a0, a0
2909- ; RV64IZHINX-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2910- ; RV64IZHINX-NEXT: addi sp, sp, 16
2911- ; RV64IZHINX-NEXT: ret
2912- ;
2913- ; RV32I-LABEL: tan_f16:
2914- ; RV32I: # %bb.0:
2915- ; RV32I-NEXT: addi sp, sp, -16
2916- ; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2917- ; RV32I-NEXT: slli a0, a0, 16
2918- ; RV32I-NEXT: srli a0, a0, 16
2919- ; RV32I-NEXT: call __extendhfsf2
2920- ; RV32I-NEXT: call tanf
2921- ; RV32I-NEXT: call __truncsfhf2
2922- ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2923- ; RV32I-NEXT: addi sp, sp, 16
2924- ; RV32I-NEXT: ret
2925- ;
2926- ; RV64I-LABEL: tan_f16:
2927- ; RV64I: # %bb.0:
2928- ; RV64I-NEXT: addi sp, sp, -16
2929- ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2930- ; RV64I-NEXT: slli a0, a0, 48
2931- ; RV64I-NEXT: srli a0, a0, 48
2932- ; RV64I-NEXT: call __extendhfsf2
2933- ; RV64I-NEXT: call tanf
2934- ; RV64I-NEXT: call __truncsfhf2
2935- ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2936- ; RV64I-NEXT: addi sp, sp, 16
2937- ; RV64I-NEXT: ret
2938- ;
2939- ; RV32IZFHMIN-LABEL: tan_f16:
2940- ; RV32IZFHMIN: # %bb.0:
2941- ; RV32IZFHMIN-NEXT: addi sp, sp, -16
2942- ; RV32IZFHMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2943- ; RV32IZFHMIN-NEXT: fcvt.s.h fa0, fa0
2944- ; RV32IZFHMIN-NEXT: call tanf
2945- ; RV32IZFHMIN-NEXT: fcvt.h.s fa0, fa0
2946- ; RV32IZFHMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2947- ; RV32IZFHMIN-NEXT: addi sp, sp, 16
2948- ; RV32IZFHMIN-NEXT: ret
2949- ;
2950- ; RV64IZFHMIN-LABEL: tan_f16:
2951- ; RV64IZFHMIN: # %bb.0:
2952- ; RV64IZFHMIN-NEXT: addi sp, sp, -16
2953- ; RV64IZFHMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2954- ; RV64IZFHMIN-NEXT: fcvt.s.h fa0, fa0
2955- ; RV64IZFHMIN-NEXT: call tanf
2956- ; RV64IZFHMIN-NEXT: fcvt.h.s fa0, fa0
2957- ; RV64IZFHMIN-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2958- ; RV64IZFHMIN-NEXT: addi sp, sp, 16
2959- ; RV64IZFHMIN-NEXT: ret
2960- ;
2961- ; RV32IZHINXMIN-LABEL: tan_f16:
2962- ; RV32IZHINXMIN: # %bb.0:
2963- ; RV32IZHINXMIN-NEXT: addi sp, sp, -16
2964- ; RV32IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2965- ; RV32IZHINXMIN-NEXT: fcvt.s.h a0, a0
2966- ; RV32IZHINXMIN-NEXT: call tanf
2967- ; RV32IZHINXMIN-NEXT: fcvt.h.s a0, a0
2968- ; RV32IZHINXMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2969- ; RV32IZHINXMIN-NEXT: addi sp, sp, 16
2970- ; RV32IZHINXMIN-NEXT: ret
2971- ;
2972- ; RV64IZHINXMIN-LABEL: tan_f16:
2973- ; RV64IZHINXMIN: # %bb.0:
2974- ; RV64IZHINXMIN-NEXT: addi sp, sp, -16
2975- ; RV64IZHINXMIN-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2976- ; RV64IZHINXMIN-NEXT: fcvt.s.h a0, a0
2977- ; RV64IZHINXMIN-NEXT: call tanf
2978- ; RV64IZHINXMIN-NEXT: fcvt.h.s a0, a0
2979- ; RV64IZHINXMIN-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2980- ; RV64IZHINXMIN-NEXT: addi sp, sp, 16
2981- ; RV64IZHINXMIN-NEXT: ret
2982- %1 = call half @llvm.tan.f16 (half %a )
2983- ret half %1
2984- }
0 commit comments