@@ -1090,3 +1090,55 @@ define x86_fp80 @rint_fp80_ld(x86_fp80 *%a0) nounwind {
1090
1090
}
1091
1091
1092
1092
declare x86_fp80 @llvm.rint.f80 (x86_fp80 %p )
1093
+
1094
+ ;
1095
+ ; roundeven
1096
+ ;
1097
+
1098
+ define x86_fp80 @roundeven_fp80 (x86_fp80 %a0 ) nounwind {
1099
+ ; X86-LABEL: roundeven_fp80:
1100
+ ; X86: # %bb.0:
1101
+ ; X86-NEXT: subl $12, %esp
1102
+ ; X86-NEXT: fldt {{[0-9]+}}(%esp)
1103
+ ; X86-NEXT: fstpt (%esp)
1104
+ ; X86-NEXT: calll roundevenl
1105
+ ; X86-NEXT: addl $12, %esp
1106
+ ; X86-NEXT: retl
1107
+ ;
1108
+ ; X64-LABEL: roundeven_fp80:
1109
+ ; X64: # %bb.0:
1110
+ ; X64-NEXT: subq $24, %rsp
1111
+ ; X64-NEXT: fldt {{[0-9]+}}(%rsp)
1112
+ ; X64-NEXT: fstpt (%rsp)
1113
+ ; X64-NEXT: callq roundevenl
1114
+ ; X64-NEXT: addq $24, %rsp
1115
+ ; X64-NEXT: retq
1116
+ %1 = call x86_fp80 @llvm.roundeven.f80 (x86_fp80 %a0 )
1117
+ ret x86_fp80 %1
1118
+ }
1119
+
1120
+ define x86_fp80 @roundeven_fp80_ld (x86_fp80 *%a0 ) nounwind {
1121
+ ; X86-LABEL: roundeven_fp80_ld:
1122
+ ; X86: # %bb.0:
1123
+ ; X86-NEXT: subl $12, %esp
1124
+ ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
1125
+ ; X86-NEXT: fldt (%eax)
1126
+ ; X86-NEXT: fstpt (%esp)
1127
+ ; X86-NEXT: calll roundevenl
1128
+ ; X86-NEXT: addl $12, %esp
1129
+ ; X86-NEXT: retl
1130
+ ;
1131
+ ; X64-LABEL: roundeven_fp80_ld:
1132
+ ; X64: # %bb.0:
1133
+ ; X64-NEXT: subq $24, %rsp
1134
+ ; X64-NEXT: fldt (%rdi)
1135
+ ; X64-NEXT: fstpt (%rsp)
1136
+ ; X64-NEXT: callq roundevenl
1137
+ ; X64-NEXT: addq $24, %rsp
1138
+ ; X64-NEXT: retq
1139
+ %1 = load x86_fp80 , x86_fp80 *%a0
1140
+ %2 = call x86_fp80 @llvm.roundeven.f80 (x86_fp80 %1 )
1141
+ ret x86_fp80 %2
1142
+ }
1143
+
1144
+ declare x86_fp80 @llvm.roundeven.f80 (x86_fp80 %p )
0 commit comments