This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG708084ec379e: [PowerPC] Support x86 compatible intrinsics on AIX (authored by qiucf).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D129461/new/ https://reviews.llvm.org/D129461 Files: clang/lib/Driver/ToolChains/AIX.cpp clang/lib/Headers/ppc_wrappers/emmintrin.h clang/lib/Headers/ppc_wrappers/mm_malloc.h clang/lib/Headers/ppc_wrappers/mmintrin.h clang/lib/Headers/ppc_wrappers/pmmintrin.h clang/lib/Headers/ppc_wrappers/smmintrin.h clang/lib/Headers/ppc_wrappers/tmmintrin.h clang/lib/Headers/ppc_wrappers/xmmintrin.h clang/test/CodeGen/PowerPC/ppc-emmintrin.c clang/test/CodeGen/PowerPC/ppc-mm-malloc.c clang/test/CodeGen/PowerPC/ppc-mmintrin.c clang/test/CodeGen/PowerPC/ppc-pmmintrin.c clang/test/CodeGen/PowerPC/ppc-smmintrin.c clang/test/CodeGen/PowerPC/ppc-tmmintrin.c clang/test/CodeGen/PowerPC/ppc-x86gprintrin.c clang/test/CodeGen/PowerPC/ppc-xmmintrin.c
Index: clang/test/CodeGen/PowerPC/ppc-xmmintrin.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-xmmintrin.c +++ clang/test/CodeGen/PowerPC/ppc-xmmintrin.c @@ -10,7 +10,7 @@ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64le-unknown-linux-gnu -mcpu=pwr10 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ -// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-P10 +// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-P10-LE // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -nostdlibinc -DNO_WARN_X86_INTRINSICS %s \ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-BE @@ -21,6 +21,13 @@ // RUN: %clang -Xclang -no-opaque-pointers -x c++ -fsyntax-only -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -nostdlibinc -DNO_WARN_X86_INTRINSICS %s \ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-BE +// RUN: %clang -Xclang -no-opaque-pointers -x c++ -fsyntax-only -target powerpc64-ibm-aix -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr10 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-P10-BE + #include <xmmintrin.h> __m128 res, m1, m2; @@ -388,7 +395,8 @@ // CHECK-LABEL: define available_externally signext i32 @_mm_cvtss_si32 // CHECK-LE: %[[VEC:[0-9a-zA-Z_.]+]] = call { <4 x float>, i32, double } asm "xxsldwi ${0:x},${0:x},${0:x},3;\0Axscvspdp ${2:x},${0:x};\0Afctiw $2,$2;\0Amfvsrd $1,${2:x};\0A", "=^wa,=r,=f,0" // CHECK-BE: %[[VEC:[0-9a-zA-Z_.]+]] = call { <4 x float>, i32, double } asm "xscvspdp ${2:x},${0:x};\0Afctiw $2,$2;\0Amfvsrd $1,${2:x};\0A", "=^wa,=r,=f,0" -// CHECK-P10: %[[VEC:[0-9a-zA-Z_.]+]] = call { <4 x float>, i32, double } asm "xxsldwi ${0:x},${0:x},${0:x},3;\0Axscvspdp ${2:x},${0:x};\0Afctiw $2,$2;\0Amfvsrd $1,${2:x};\0A", "=^wa,=r,=f,0" +// CHECK-P10-LE: %[[VEC:[0-9a-zA-Z_.]+]] = call { <4 x float>, i32, double } asm "xxsldwi ${0:x},${0:x},${0:x},3;\0Axscvspdp ${2:x},${0:x};\0Afctiw $2,$2;\0Amfvsrd $1,${2:x};\0A", "=^wa,=r,=f,0" +// CHECK-P10-BE: %[[VEC:[0-9a-zA-Z_.]+]] = call { <4 x float>, i32, double } asm "xscvspdp ${2:x},${0:x};\0Afctiw $2,$2;\0Amfvsrd $1,${2:x};\0A", "=^wa,=r,=f,0" // CHECK: extractvalue { <4 x float>, i32, double } %[[VEC]], 0 // CHECK: extractvalue { <4 x float>, i32, double } %[[VEC]], 1 // CHECK: extractvalue { <4 x float>, i32, double } %[[VEC]], 2 @@ -688,7 +696,8 @@ // CHECK-BE: call <2 x i64> @vec_vbpermq(unsigned char vector[16], unsigned char vector[16])(<16 x i8> noundef %{{[0-9a-zA-Z_.]+}}, <16 x i8> noundef bitcast (<4 x i32> <i32 -2139062144, i32 -2139062144, i32 -2139062144, i32 2113632> to <16 x i8>)) // CHECK-BE: %[[EXT:[0-9a-zA-Z_.]+]] = extractelement <2 x i64> %{{[0-9a-zA-Z_.]+}}, i32 0 // CHECK-BE: trunc i64 %[[EXT]] to i32 -// CHECK-P10: call zeroext i32 @vec_extractm(unsigned int vector[4])(<4 x i32> noundef %{{[0-9a-zA-Z_.]+}}) +// CHECK-P10-LE: call zeroext i32 @vec_extractm(unsigned int vector[4])(<4 x i32> noundef %{{[0-9a-zA-Z_.]+}}) +// CHECK-P10-BE: call zeroext i32 @vec_extractm(unsigned int vector[4])(<4 x i32> noundef %{{[0-9a-zA-Z_.]+}}) void __attribute__((noinline)) test_alt_name_move() { Index: clang/test/CodeGen/PowerPC/ppc-x86gprintrin.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-x86gprintrin.c +++ clang/test/CodeGen/PowerPC/ppc-x86gprintrin.c @@ -9,6 +9,9 @@ // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-unknown-freebsd13.0 -mcpu=pwr7 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr7 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s + #include <x86gprintrin.h> unsigned short us; Index: clang/test/CodeGen/PowerPC/ppc-tmmintrin.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-tmmintrin.c +++ clang/test/CodeGen/PowerPC/ppc-tmmintrin.c @@ -10,6 +10,9 @@ // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-LE +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-BE + #include <tmmintrin.h> __m64 res, m1, m2; Index: clang/test/CodeGen/PowerPC/ppc-smmintrin.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-smmintrin.c +++ clang/test/CodeGen/PowerPC/ppc-smmintrin.c @@ -15,6 +15,16 @@ // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-unknown-linux-gnu -mcpu=pwr10 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefix=P10 +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-unknown-freebsd13.0 -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s + +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr10 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefix=P10 +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s + #include <smmintrin.h> __m128 mn1, mn2; Index: clang/test/CodeGen/PowerPC/ppc-pmmintrin.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-pmmintrin.c +++ clang/test/CodeGen/PowerPC/ppc-pmmintrin.c @@ -10,6 +10,9 @@ // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr8 -DNO_MM_MALLOC -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr8 -DNO_MM_MALLOC -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s + #include <pmmintrin.h> __m128d resd, md1, md2; Index: clang/test/CodeGen/PowerPC/ppc-mmintrin.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-mmintrin.c +++ clang/test/CodeGen/PowerPC/ppc-mmintrin.c @@ -18,6 +18,11 @@ // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64le-unknown-freebsd13.0 -mcpu=pwr9 -DNO_WARN_X86_INTRINSICS %s \ // RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n| FileCheck %s --check-prefixes=CHECK-P9,CHECK,CHECK-LE +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr8 -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK-P8,CHECK,CHECK-BE +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr9 -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK-P9,CHECK,CHECK-BE + #include <mmintrin.h> unsigned long long int ull1, ull2; Index: clang/test/CodeGen/PowerPC/ppc-mm-malloc.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-mm-malloc.c +++ clang/test/CodeGen/PowerPC/ppc-mm-malloc.c @@ -7,6 +7,7 @@ // failures. So this test will focus on native build only. // RUN: %clang -Xclang -no-opaque-pointers -target powerpc64-unknown-linux-gnu -S -emit-llvm %s -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | FileCheck %s +// RUN: %clang -Xclang -no-opaque-pointers -target powerpc64-ibm-aix -S -emit-llvm %s -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | FileCheck %s #include <mm_malloc.h> Index: clang/test/CodeGen/PowerPC/ppc-emmintrin.c =================================================================== --- clang/test/CodeGen/PowerPC/ppc-emmintrin.c +++ clang/test/CodeGen/PowerPC/ppc-emmintrin.c @@ -6,7 +6,12 @@ // RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-LE // RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64le-unknown-linux-gnu -mcpu=pwr10 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ -// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK-P10-LE +// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK-P10 + +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr8 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK,CHECK-BE +// RUN: %clang -Xclang -no-opaque-pointers -S -emit-llvm -target powerpc64-ibm-aix -mcpu=pwr10 -ffreestanding -DNO_WARN_X86_INTRINSICS %s \ +// RUN: -ffp-contract=off -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt -n | FileCheck %s --check-prefixes=CHECK-P10 // CHECK-BE-DAG: @_mm_movemask_pd.__perm_mask = internal constant <4 x i32> <i32 -2139062144, i32 -2139062144, i32 -2139062144, i32 -2139078656>, align 16 // CHECK-BE-DAG: @_mm_shuffle_epi32.__permute_selectors = internal constant [4 x i32] [i32 66051, i32 67438087, i32 134810123, i32 202182159], align 4 @@ -623,12 +628,12 @@ // CHECK-LABEL: define available_externally <2 x double> @_mm_load1_pd // CHECK: %[[ADDR:[0-9a-zA-Z_.]+]] = load double*, double** %{{[0-9a-zA-Z_.]+}}, align 8 -// CHECK: %[[VAL:[0-9a-zA-Z_.]+]] = load double, double* %[[ADDR]], align 8 +// CHECK: %[[VAL:[0-9a-zA-Z_.]+]] = load double, double* %[[ADDR]] // CHECK: call <2 x double> @vec_splats(double)(double noundef %[[VAL]]) // CHECK-LABEL: define available_externally <2 x double> @_mm_loadh_pd // CHECK: %[[ADDR:[0-9a-zA-Z_.]+]] = load double*, double** %{{[0-9a-zA-Z_.]+}}, align 8 -// CHECK: %[[VAL:[0-9a-zA-Z_.]+]] = load double, double* %{{[0-9a-zA-Z_.]+}}, align 8 +// CHECK: %[[VAL:[0-9a-zA-Z_.]+]] = load double, double* %{{[0-9a-zA-Z_.]+}} // CHECK: %[[VEC:[0-9a-zA-Z_.]+]] = load <2 x double>, <2 x double>* %{{[0-9a-zA-Z_.]+}}, align 16 // CHECK: insertelement <2 x double> %[[VEC]], double %[[VAL]], i32 1 @@ -637,7 +642,7 @@ // CHECK-LABEL: define available_externally <2 x double> @_mm_loadl_pd // CHECK: %[[ADDR:[0-9a-zA-Z_.]+]] = load double*, double** %{{[0-9a-zA-Z_.]+}}, align 8 -// CHECK: %[[ADDR2:[0-9a-zA-Z_.]+]] = load double, double* %[[ADDR]], align 8 +// CHECK: %[[ADDR2:[0-9a-zA-Z_.]+]] = load double, double* %[[ADDR]] // CHECK: %[[VEC:[0-9a-zA-Z_.]+]] = load <2 x double>, <2 x double>* %{{[0-9a-zA-Z_.]+}}, align 16 // CHECK: insertelement <2 x double> %[[VEC]], double %[[ADDR2]], i32 0 @@ -762,8 +767,8 @@ // CHECK: %[[EXT:[0-9a-zA-Z_.]+]] = extractelement <2 x double> %{{[0-9a-zA-Z_.]+}}, i32 0 // CHECK: insertelement <2 x double> %{{[0-9a-zA-Z_.]+}}, double %[[EXT]], i32 0 -// CHECK-P10-LE-LABEL: define available_externally signext i32 @_mm_movemask_epi8 -// CHECK-P10-LE: call zeroext i32 @vec_extractm(unsigned char vector[16])(<16 x i8> noundef %{{[0-9a-zA-Z_.]+}}) +// CHECK-P10-LABEL: define available_externally signext i32 @_mm_movemask_epi8 +// CHECK-P10: call zeroext i32 @vec_extractm(unsigned char vector[16])(<16 x i8> noundef %{{[0-9a-zA-Z_.]+}}) // CHECK-LABEL: define available_externally signext i32 @_mm_movemask_epi8 // CHECK: call <2 x i64> @vec_vbpermq(unsigned char vector[16], unsigned char vector[16])(<16 x i8> noundef %{{[0-9a-zA-Z_.]+}}, <16 x i8> noundef <i8 120, i8 112, i8 104, i8 96, i8 88, i8 80, i8 72, i8 64, i8 56, i8 48, i8 40, i8 32, i8 24, i8 16, i8 8, i8 0>) @@ -771,8 +776,8 @@ // CHECK-BE: %[[VAL:[0-9a-zA-Z_.]+]] = extractelement <2 x i64> %{{[0-9a-zA-Z_.]+}}, i32 0 // CHECK: trunc i64 %[[VAL]] to i32 -// CHECK-P10-LE-LABEL: define available_externally signext i32 @_mm_movemask_pd -// CHECK-P10-LE: call zeroext i32 @vec_extractm(unsigned long long vector[2])(<2 x i64> noundef %{{[0-9a-zA-Z_.]+}}) +// CHECK-P10-LABEL: define available_externally signext i32 @_mm_movemask_pd +// CHECK-P10: call zeroext i32 @vec_extractm(unsigned long long vector[2])(<2 x i64> noundef %{{[0-9a-zA-Z_.]+}}) // CHECK-LABEL: define available_externally signext i32 @_mm_movemask_pd // CHECK-LE: call <2 x i64> @vec_vbpermq(unsigned char vector[16], unsigned char vector[16])(<16 x i8> noundef %{{[0-9a-zA-Z_.]+}}, <16 x i8> noundef bitcast (<4 x i32> <i32 -2139094976, i32 -2139062144, i32 -2139062144, i32 -2139062144> to <16 x i8>)) @@ -1316,7 +1321,7 @@ // CHECK-LABEL: define available_externally void @_mm_store_sd // CHECK: %[[ADDR:[0-9a-zA-Z_.]+]] = load double*, double** %{{[0-9a-zA-Z_.]+}}, align 8 -// CHECK: store double %{{[0-9a-zA-Z_.]+}}, double* %[[ADDR]], align 8 +// CHECK: store double %{{[0-9a-zA-Z_.]+}}, double* %[[ADDR]] // CHECK-LABEL: define available_externally void @_mm_store_si128 // CHECK: %[[LOAD:[0-9a-zA-Z_.]+]] = load <2 x i64>*, <2 x i64>** %{{[0-9a-zA-Z_.]+}}, align 8 @@ -1331,7 +1336,7 @@ // CHECK-LABEL: define available_externally void @_mm_storeh_pd // CHECK: %[[ADDR:[0-9a-zA-Z_.]+]] = load double*, double** %{{[0-9a-zA-Z_.]+}}, align 8 -// CHECK: store double %{{[0-9a-zA-Z_.]+}}, double* %[[ADDR]], align 8 +// CHECK: store double %{{[0-9a-zA-Z_.]+}}, double* %[[ADDR]] // CHECK-LABEL: define available_externally void @_mm_storel_epi64 // CHECK: %[[ADDR:[0-9a-zA-Z_.]+]] = load <2 x i64>*, <2 x i64>** %{{[0-9a-zA-Z_.]+}}, align 8 Index: clang/lib/Headers/ppc_wrappers/xmmintrin.h =================================================================== --- clang/lib/Headers/ppc_wrappers/xmmintrin.h +++ clang/lib/Headers/ppc_wrappers/xmmintrin.h @@ -35,7 +35,8 @@ #ifndef XMMINTRIN_H_ #define XMMINTRIN_H_ -#if defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) +#if defined(__ppc64__) && \ + (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) /* Define four value permute mask */ #define _MM_SHUFFLE(w, x, y, z) (((w) << 6) | ((x) << 4) | ((y) << 2) | (z)) @@ -1820,7 +1821,7 @@ #else #include_next <xmmintrin.h> -#endif /* defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) \ - */ +#endif /* defined(__ppc64__) && + * (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) */ #endif /* XMMINTRIN_H_ */ Index: clang/lib/Headers/ppc_wrappers/tmmintrin.h =================================================================== --- clang/lib/Headers/ppc_wrappers/tmmintrin.h +++ clang/lib/Headers/ppc_wrappers/tmmintrin.h @@ -25,7 +25,8 @@ #ifndef TMMINTRIN_H_ #define TMMINTRIN_H_ -#if defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) +#if defined(__ppc64__) && \ + (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) #include <altivec.h> @@ -446,7 +447,7 @@ #else #include_next <tmmintrin.h> -#endif /* defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) \ - */ +#endif /* defined(__ppc64__) && + * (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) */ #endif /* TMMINTRIN_H_ */ Index: clang/lib/Headers/ppc_wrappers/smmintrin.h =================================================================== --- clang/lib/Headers/ppc_wrappers/smmintrin.h +++ clang/lib/Headers/ppc_wrappers/smmintrin.h @@ -29,7 +29,8 @@ #ifndef SMMINTRIN_H_ #define SMMINTRIN_H_ -#if defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) +#if defined(__ppc64__) && \ + (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) #include <altivec.h> #include <tmmintrin.h> @@ -656,7 +657,7 @@ #else #include_next <smmintrin.h> -#endif /* defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) \ - */ +#endif /* defined(__ppc64__) && + * (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) */ #endif /* SMMINTRIN_H_ */ Index: clang/lib/Headers/ppc_wrappers/pmmintrin.h =================================================================== --- clang/lib/Headers/ppc_wrappers/pmmintrin.h +++ clang/lib/Headers/ppc_wrappers/pmmintrin.h @@ -39,7 +39,8 @@ #ifndef PMMINTRIN_H_ #define PMMINTRIN_H_ -#if defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) +#if defined(__ppc64__) && \ + (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) /* We need definitions from the SSE2 and SSE header files*/ #include <emmintrin.h> @@ -138,7 +139,7 @@ #else #include_next <pmmintrin.h> -#endif /* defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) \ - */ +#endif /* defined(__ppc64__) && + * (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) */ #endif /* PMMINTRIN_H_ */ Index: clang/lib/Headers/ppc_wrappers/mmintrin.h =================================================================== --- clang/lib/Headers/ppc_wrappers/mmintrin.h +++ clang/lib/Headers/ppc_wrappers/mmintrin.h @@ -35,7 +35,8 @@ #ifndef _MMINTRIN_H_INCLUDED #define _MMINTRIN_H_INCLUDED -#if defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) +#if defined(__ppc64__) && \ + (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) #include <altivec.h> /* The Intel API is flexible enough that we must allow aliasing with other @@ -1446,7 +1447,7 @@ #else #include_next <mmintrin.h> -#endif /* defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) \ - */ +#endif /* defined(__ppc64__) && + * (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) */ #endif /* _MMINTRIN_H_INCLUDED */ Index: clang/lib/Headers/ppc_wrappers/mm_malloc.h =================================================================== --- clang/lib/Headers/ppc_wrappers/mm_malloc.h +++ clang/lib/Headers/ppc_wrappers/mm_malloc.h @@ -10,7 +10,8 @@ #ifndef _MM_MALLOC_H_INCLUDED #define _MM_MALLOC_H_INCLUDED -#if defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) +#if defined(__ppc64__) && \ + (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) #include <stdlib.h> Index: clang/lib/Headers/ppc_wrappers/emmintrin.h =================================================================== --- clang/lib/Headers/ppc_wrappers/emmintrin.h +++ clang/lib/Headers/ppc_wrappers/emmintrin.h @@ -36,7 +36,8 @@ #ifndef EMMINTRIN_H_ #define EMMINTRIN_H_ -#if defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) +#if defined(__ppc64__) && \ + (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) #include <altivec.h> @@ -2261,7 +2262,7 @@ #else #include_next <emmintrin.h> -#endif /* defined(__ppc64__) && (defined(__linux__) || defined(__FreeBSD__)) \ - */ +#endif /* defined(__ppc64__) && + * (defined(__linux__) || defined(__FreeBSD__) || defined(_AIX)) */ #endif /* EMMINTRIN_H_ */ Index: clang/lib/Driver/ToolChains/AIX.cpp =================================================================== --- clang/lib/Driver/ToolChains/AIX.cpp +++ clang/lib/Driver/ToolChains/AIX.cpp @@ -222,11 +222,13 @@ llvm::StringRef Sysroot = GetHeaderSysroot(DriverArgs); const Driver &D = getDriver(); - // Add the Clang builtin headers (<resource>/include). if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { SmallString<128> P(D.ResourceDir); - path::append(P, "/include"); - addSystemInclude(DriverArgs, CC1Args, P.str()); + // Add the PowerPC intrinsic headers (<resource>/include/ppc_wrappers) + path::append(P, "include", "ppc_wrappers"); + addSystemInclude(DriverArgs, CC1Args, P); + // Add the Clang builtin headers (<resource>/include) + addSystemInclude(DriverArgs, CC1Args, path::parent_path(P.str())); } // Return if -nostdlibinc is specified as a driver option.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits