llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: None (hstk30-hw) <details> <summary>Changes</summary> Want to support SVE in big endian. Not sure how many bugs it has. `CreateVectorReverse` may not a correct api for REV, sleep :) --- Full diff: https://github.com/llvm/llvm-project/pull/132772.diff 2 Files Affected: - (modified) clang/lib/CodeGen/TargetBuiltins/ARM.cpp (+5-1) - (modified) clang/utils/TableGen/SveEmitter.cpp (-4) ``````````diff diff --git a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp index fd44f4ce47b5b..f488304dfe4b0 100644 --- a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp +++ b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp @@ -4366,7 +4366,11 @@ Value *CodeGenFunction::EmitSVEReinterpret(Value *Val, llvm::Type *Ty) { return Tuple; } - return Builder.CreateBitCast(Val, Ty); + Value *Res = Builder.CreateBitCast(Val, Ty); + if (getTarget().isBigEndian()) + Res = Builder.CreateVectorReverse(Res, "sve.reinterpret"); + + return Res; } static void InsertExplicitZeroOperand(CGBuilderTy &Builder, llvm::Type *Ty, diff --git a/clang/utils/TableGen/SveEmitter.cpp b/clang/utils/TableGen/SveEmitter.cpp index e226987b4844b..1aec2368ad330 100644 --- a/clang/utils/TableGen/SveEmitter.cpp +++ b/clang/utils/TableGen/SveEmitter.cpp @@ -1306,10 +1306,6 @@ void SVEEmitter::createHeader(raw_ostream &OS) { OS << "#ifndef __ARM_SVE_H\n"; OS << "#define __ARM_SVE_H\n\n"; - OS << "#if !defined(__LITTLE_ENDIAN__)\n"; - OS << "#error \"Big endian is currently not supported for arm_sve.h\"\n"; - OS << "#endif\n"; - OS << "#include <stdint.h>\n\n"; OS << "#ifdef __cplusplus\n"; OS << "extern \"C\" {\n"; `````````` </details> https://github.com/llvm/llvm-project/pull/132772 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits