https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82463
Bug ID: 82463 Summary: vec_madd does not map to __builtin_s390_vfmasb for z14 Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: markos at freevec dot org Target Milestone: --- Host: s390x-ibm-linux-gnu Target: s390x-ibm-linux-gnu Build: s390x-ibm-linux-gnu Trying to compile the simple test case breaks: #include <vecintrin.h> typedef __vector float Packet4f; int main() { Packet4f v1 = { 1.0, -1.0, -2.0, 2.0 }; Packet4f v2 = { 2.0, 0.5, 0.1, 0.2 }; Packet4f v0 = { 0.0, 0.0, 0.0, 0.0 }; Packet4f prod = vec_madd(v1, v2, v0); } g++ -march=z14 -mzvector zvectortest2.cpp -o zvectortest2 zvectortest2.cpp: In function 'int main()': zvectortest2.cpp:10:37: error: cannot convert 'Packet4f {aka __vector(4) float}' to '__vector(2) double' for argument '1' to '__vector(2) double __builtin_s390_vfmadb(__vector(2) double, __vector(2) double, __vector(2) double)' Packet4f prod = vec_madd(v1, v2, v0); Changing to __builtin_s390_vfmasb explicitly seems to work.