llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clangir

Author: Amr Hesham (AmrDeveloper)

<details>
<summary>Changes</summary>

Add preserve_vec_3_type LangOptions to the lowering_lang_options to be used 
when lowering the built-in vector type of 3 elements

---
Full diff: https://github.com/llvm/llvm-project/pull/233125.diff


5 Files Affected:

- (modified) clang/include/clang/CIR/Dialect/IR/CIRAttrs.td (+8-6) 
- (modified) clang/lib/CIR/CodeGen/CIRGenModule.cpp (+1) 
- (modified) clang/test/CIR/CodeGen/lowering-lang-options.cpp (+1) 
- (modified) clang/test/CIR/IR/lowering-lang-options.cir (+2-2) 
- (modified) clang/test/CIR/Transforms/lowering-prepare.cir (+1-1) 


``````````diff
diff --git a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td 
b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
index aa9562586d2f55..ad37e6631c1256 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
@@ -2500,10 +2500,10 @@ def CIR_LoweringLangOptionsAttr
 
     Each bool field mirrors the like-named `LangOptions` member: `exceptions`,
     `threadsafe_statics`, `cuda`, `cuda_is_device`, `hip`, `hlsl`, `gpu_rdc`,
-    `openmp` (`LangOpts.OpenMP != 0`; only its on/off state matters), and
+    `openmp` (`LangOpts.OpenMP != 0`; only its on/off state matters),
     `openmp_is_target_device`. `clang_abi_compat` is an `i32` mirroring
-    `LangOptions::ClangABI`; it is an `i32` rather than a CIR enum because
-    `ClangABI` gains an enumerator every Clang release (see
+    `LangOptions::ClangABI` and `preserve_vec_3_type`; it is an `i32` rather 
than a 
+    CIR enum because `ClangABI` gains an enumerator every Clang release (see
     `clang/Basic/ABIVersions.def`), and the ordinal round-trips fine within a
     single toolchain.
 
@@ -2512,7 +2512,8 @@ def CIR_LoweringLangOptionsAttr
     module attributes {cir.lowering_lang_options = #cir.lowering_lang_options<
       exceptions = false, threadsafe_statics = true, cuda = false,
       cuda_is_device = false, hip = false, gpu_rdc = false, openmp = false,
-      openmp_is_target_device = false, clang_abi_compat = 17>} { }
+      openmp_is_target_device = false, preserve_vec_3_type = false, 
+      clang_abi_compat = 17>} { }
     ```
   }];
 
@@ -2526,13 +2527,14 @@ def CIR_LoweringLangOptionsAttr
     "bool":$gpu_rdc,
     "bool":$openmp,
     "bool":$openmp_is_target_device,
+    "bool":$preserve_vec_3_type,
     "int32_t":$clang_abi_compat
   );
 
   let assemblyFormat = [{
     `<` struct($exceptions, $threadsafe_statics, $cuda, $cuda_is_device, $hip,
-               $hlsl, $gpu_rdc, $openmp, $openmp_is_target_device,
-               $clang_abi_compat) `>`
+               $hlsl, $gpu_rdc, $openmp, $openmp_is_target_device, 
+               $preserve_vec_3_type, $clang_abi_compat) `>`
   }];
 
   let canHaveIllegalCXXABIType = 0;
diff --git a/clang/lib/CIR/CodeGen/CIRGenModule.cpp 
b/clang/lib/CIR/CodeGen/CIRGenModule.cpp
index 614a731158e455..be297e4267644c 100644
--- a/clang/lib/CIR/CodeGen/CIRGenModule.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenModule.cpp
@@ -195,6 +195,7 @@ CIRGenModule::CIRGenModule(mlir::MLIRContext &mlirContext,
           /*gpu_rdc=*/langOpts.GPURelocatableDeviceCode,
           /*openmp=*/langOpts.OpenMP != 0,
           /*openmp_is_target_device=*/langOpts.OpenMPIsTargetDevice,
+          /*preserve_vec_3_type=*/langOpts.PreserveVec3Type,
           /*clang_abi_compat=*/
           static_cast<int32_t>(langOpts.getClangABICompat())));
 
diff --git a/clang/test/CIR/CodeGen/lowering-lang-options.cpp 
b/clang/test/CIR/CodeGen/lowering-lang-options.cpp
index d547e3dce47810..be1a7a546d124b 100644
--- a/clang/test/CIR/CodeGen/lowering-lang-options.cpp
+++ b/clang/test/CIR/CodeGen/lowering-lang-options.cpp
@@ -24,6 +24,7 @@ int x;
 // PLAIN-SAME: gpu_rdc = false
 // PLAIN-SAME: openmp = false
 // PLAIN-SAME: openmp_is_target_device = false
+// PLAIN-SAME: preserve_vec_3_type = false
 // PLAIN-SAME: clang_abi_compat = {{[0-9]+}}>
 
 // -fexceptions -fcxx-exceptions flips exceptions. (OpenMP is exercised in the
diff --git a/clang/test/CIR/IR/lowering-lang-options.cir 
b/clang/test/CIR/IR/lowering-lang-options.cir
index cb1c82eb3d1019..7a67ccb815c2cf 100644
--- a/clang/test/CIR/IR/lowering-lang-options.cir
+++ b/clang/test/CIR/IR/lowering-lang-options.cir
@@ -7,10 +7,10 @@
 module attributes {cir.lowering_lang_options = #cir.lowering_lang_options<
   exceptions = true, threadsafe_statics = false, cuda = true,
   cuda_is_device = true, hip = true, hlsl = true, gpu_rdc = true, openmp = 
true,
-  openmp_is_target_device = true, clang_abi_compat = 9>} {
+  openmp_is_target_device = true, preserve_vec_3_type = true, clang_abi_compat 
= 9>} {
 }
 
 // CHECK: cir.lowering_lang_options = #cir.lowering_lang_options<
 // CHECK-SAME: exceptions = true, threadsafe_statics = false, cuda = true,
 // CHECK-SAME: cuda_is_device = true, hip = true, hlsl = true, gpu_rdc = true, 
openmp = true,
-// CHECK-SAME: openmp_is_target_device = true, clang_abi_compat = 9>
+// CHECK-SAME: openmp_is_target_device = true, preserve_vec_3_type = true, 
clang_abi_compat = 9>
diff --git a/clang/test/CIR/Transforms/lowering-prepare.cir 
b/clang/test/CIR/Transforms/lowering-prepare.cir
index d535eb0df67687..004af8c606673b 100644
--- a/clang/test/CIR/Transforms/lowering-prepare.cir
+++ b/clang/test/CIR/Transforms/lowering-prepare.cir
@@ -12,7 +12,7 @@ module attributes {
   cir.lowering_lang_options = #cir.lowering_lang_options<
     exceptions = false, threadsafe_statics = true, cuda = false,
     cuda_is_device = false, hip = false, hlsl = false, gpu_rdc = false, openmp 
= false,
-    openmp_is_target_device = false, clang_abi_compat = 16>
+    openmp_is_target_device = false, preserve_vec_3_type = false, 
clang_abi_compat = 16>
 } {
   cir.global "private" internal dso_local dynamic_init_guard<"_ZGVZ1gvE1x"> 
@_ZZ1gvE1x = #cir.int<0> : !s32i align(4) dynamic_init_info<local = true, tls = 
none, is_inline = false, tsk = undeclared>
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/233125
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to