[clang] [CLANG] Full support of complex multiplication and division. (PR #81514)

Andy Kaylor via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 21 14:00:57 PST 2024


================
@@ -79,29 +91,152 @@ _Complex float pragma_on_div(_Complex float a, _Complex float b) {
   // LMTD-NEXT: fdiv float
   // LMTD-NEXT: fdiv float
 
-  // FRTRN: fmul float
-  // FRTRN-NEXT: fmul float
-  // FRTRN-NEXT: fadd float
-  // FRTRN-NEXT: fmul float
-  // FRTRN-NEXT: fmul float
-  // FRTRN-NEXT: fadd float
-  // FRTRN-NEXT: fmul float
-  // FRTRN-NEXT: fmul float
-  // FRTRN-NEXT: fsub float
-  // FRTRN-NEXT: fdiv float
-  // FRTRN-NEXT: fdiv float
+  // SMITH: fmul float
+  // SMITH-NEXT: fmul float
+  // SMITH-NEXT: fadd float
+  // SMITH-NEXT: fmul float
+  // SMITH-NEXT: fmul float
+  // SMITH-NEXT: fadd float
+  // SMITH-NEXT: fmul float
+  // SMITH-NEXT: fmul float
+  // SMITH-NEXT: fsub float
+  // SMITH-NEXT: fdiv float
+  // SMITH-NEXT: fdiv float
+
+  // EXTND:   fpext float {{.*}} to double
+  // EXTND:   fpext float {{.*}} to double
+  // EXTND:   fmul double
+  // EXTND:   fmul double
+  // EXTND:   fadd double
+  // EXTND:   fmul double
+  // EXTND:   fmul double
+  // EXTND:   fadd double
+  // EXTND:   fmul double
+  // EXTND:   fmul double
+  // EXTND:   fsub double
+  // EXTND:   fdiv double
+  // EXTND:   fdiv double
+  // EXTND:   fptrunc double
+  // EXTND:   fptrunc double
 
   return a / b;
 }
 
 _Complex float pragma_off_div(_Complex float a, _Complex float b) {
 #pragma STDC CX_LIMITED_RANGE OFF
   // LABEL: define {{.*}} @pragma_off_div(
+
   // FULL: call {{.*}} @__divsc3
 
   // LMTD: call {{.*}} @__divsc3
 
-  // FRTRN: call {{.*}} @__divsc3
+  // SMITH: call {{.*}} @__divsc3
+
+  // EXTND: call {{.*}} @__divdc3
+
+  return a / b;
+}
+
+_Complex float pragma_default_mul(_Complex float a, _Complex float b) {
+#pragma STDC CX_LIMITED_RANGE DEFAULT
+  // LABEL: define {{.*}} @pragma_on_mul(
+
+  // FULL: fmul float
+  // FULL-NEXT: fmul float
+  // FULL-NEXT: fmul float
+  // FULL-NEXT: fmul float
+  // FULL-NEXT: fsub float
+  // FULL-NEXT: fadd float
----------------
andykaylor wrote:

Shouldn't there be a check for NaN comparisons and a library call in this case?

https://github.com/llvm/llvm-project/pull/81514


More information about the cfe-commits mailing list