|
21 | 21 |
|
22 | 22 | #if LLVM_VERSION_GE(5, 0)
|
23 | 23 | #include "llvm/ADT/Optional.h"
|
| 24 | +#else |
| 25 | +#include <cstdlib> |
24 | 26 | #endif
|
25 | 27 |
|
26 | 28 | //===----------------------------------------------------------------------===
|
@@ -1397,7 +1399,7 @@ LLVMRustModuleCost(LLVMModuleRef M) {
|
1397 | 1399 | }
|
1398 | 1400 |
|
1399 | 1401 | // Vector reductions:
|
1400 |
| -#if LLVM_VERSION_GE(6, 0) |
| 1402 | +#if LLVM_VERSION_GE(5, 0) |
1401 | 1403 | extern "C" LLVMValueRef
|
1402 | 1404 | LLVMRustBuildVectorReduceFAdd(LLVMBuilderRef B, LLVMValueRef Acc, LLVMValueRef Src) {
|
1403 | 1405 | return wrap(unwrap(B)->CreateFAddReduce(unwrap(Acc),unwrap(Src)));
|
@@ -1445,48 +1447,65 @@ LLVMRustBuildVectorReduceFMax(LLVMBuilderRef B, LLVMValueRef Src, bool NoNaN) {
|
1445 | 1447 |
|
1446 | 1448 | #else
|
1447 | 1449 |
|
| 1450 | +void error_and_exit(const char* msg) { |
| 1451 | + raw_fd_ostream OS(2, false); |
| 1452 | + OS << ::std::string(msg); |
| 1453 | + std::exit(EXIT_FAILURE); |
| 1454 | +} |
| 1455 | + |
1448 | 1456 | extern "C" LLVMValueRef
|
1449 | 1457 | LLVMRustBuildVectorReduceFAdd(LLVMBuilderRef, LLVMValueRef, LLVMValueRef Src) {
|
| 1458 | + error_and_exit("LLVMRustBuildVectorReduceFAdd requires LLVM >= 5.0"); |
1450 | 1459 | return Src;
|
1451 | 1460 | }
|
1452 | 1461 | extern "C" LLVMValueRef
|
1453 | 1462 | LLVMRustBuildVectorReduceFMul(LLVMBuilderRef, LLVMValueRef, LLVMValueRef Src) {
|
| 1463 | + error_and_exit("LLVMRustBuildVectorReduceFMul requires LLVM >= 5.0"); |
1454 | 1464 | return Src;
|
1455 | 1465 | }
|
1456 | 1466 | extern "C" LLVMValueRef
|
1457 | 1467 | LLVMRustBuildVectorReduceAdd(LLVMBuilderRef, LLVMValueRef Src) {
|
| 1468 | + error_and_exit("LLVMRustBuildVectorReduceAdd requires LLVM >= 5.0"); |
1458 | 1469 | return Src;
|
1459 | 1470 | }
|
1460 | 1471 | extern "C" LLVMValueRef
|
1461 | 1472 | LLVMRustBuildVectorReduceMul(LLVMBuilderRef, LLVMValueRef Src) {
|
| 1473 | + error_and_exit("LLVMRustBuildVectorReduceMul requires LLVM >= 5.0"); |
1462 | 1474 | return Src;
|
1463 | 1475 | }
|
1464 | 1476 | extern "C" LLVMValueRef
|
1465 | 1477 | LLVMRustBuildVectorReduceAnd(LLVMBuilderRef, LLVMValueRef Src) {
|
| 1478 | + error_and_exit("LLVMRustBuildVectorReduceAnd requires LLVM >= 5.0"); |
1466 | 1479 | return Src;
|
1467 | 1480 | }
|
1468 | 1481 | extern "C" LLVMValueRef
|
1469 | 1482 | LLVMRustBuildVectorReduceOr(LLVMBuilderRef, LLVMValueRef Src) {
|
| 1483 | + error_and_exit("LLVMRustBuildVectorReduceOr requires LLVM >= 5.0"); |
1470 | 1484 | return Src;
|
1471 | 1485 | }
|
1472 | 1486 | extern "C" LLVMValueRef
|
1473 | 1487 | LLVMRustBuildVectorReduceXor(LLVMBuilderRef, LLVMValueRef Src) {
|
| 1488 | + error_and_exit("LLVMRustBuildVectorReduceXor requires LLVM >= 5.0"); |
1474 | 1489 | return Src;
|
1475 | 1490 | }
|
1476 | 1491 | extern "C" LLVMValueRef
|
1477 | 1492 | LLVMRustBuildVectorReduceMin(LLVMBuilderRef, LLVMValueRef Src, bool) {
|
| 1493 | + error_and_exit("LLVMRustBuildVectorReduceMin requires LLVM >= 5.0"); |
1478 | 1494 | return Src;
|
1479 | 1495 | }
|
1480 | 1496 | extern "C" LLVMValueRef
|
1481 | 1497 | LLVMRustBuildVectorReduceMax(LLVMBuilderRef, LLVMValueRef Src, bool) {
|
| 1498 | + error_and_exit("LLVMRustBuildVectorReduceMax requires LLVM >= 5.0"); |
1482 | 1499 | return Src;
|
1483 | 1500 | }
|
1484 | 1501 | extern "C" LLVMValueRef
|
1485 | 1502 | LLVMRustBuildVectorReduceFMin(LLVMBuilderRef, LLVMValueRef Src, bool) {
|
| 1503 | + error_and_exit("LLVMRustBuildVectorReduceFMin requires LLVM >= 5.0"); |
1486 | 1504 | return Src;
|
1487 | 1505 | }
|
1488 | 1506 | extern "C" LLVMValueRef
|
1489 | 1507 | LLVMRustBuildVectorReduceFMax(LLVMBuilderRef, LLVMValueRef Src, bool) {
|
| 1508 | + error_and_exit("LLVMRustBuildVectorReduceFMax requires LLVM >= 5.0"); |
1490 | 1509 | return Src;
|
1491 | 1510 | }
|
1492 | 1511 | #endif
|
0 commit comments