[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-11 Thread Haocong Lu via cfe-commits

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


[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-11 Thread Haocong Lu via cfe-commits




Luhaocong wrote:

done

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


[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-11 Thread Haocong Lu via cfe-commits

https://github.com/Luhaocong updated 
https://github.com/llvm/llvm-project/pull/175113

>From dcf668e2fd783ee6aea5613093439380517d2872 Mon Sep 17 00:00:00 2001
From: Haocong Lu 
Date: Fri, 9 Jan 2026 11:26:32 +0800
Subject: [PATCH 1/2] [Clang][X86] Remove useless `extractvalue` on
 aesencwide/aesdecwide builtin CodeGen

This is a pre-commit of CIR codegen for `aesencwide/aesdecwide` builtin, remove
useless `extractvalue` on clang CodeGen for this builtin.
---
 clang/lib/CodeGen/TargetBuiltins/X86.cpp |   5 +-
 clang/test/CodeGen/X86/keylocker.c   | 344 +--
 2 files changed, 142 insertions(+), 207 deletions(-)

diff --git a/clang/lib/CodeGen/TargetBuiltins/X86.cpp 
b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
index 685040fc4524f..52b1921cab91c 100644
--- a/clang/lib/CodeGen/TargetBuiltins/X86.cpp
+++ b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
@@ -3194,9 +3194,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned 
BuiltinID,
 
 Builder.SetInsertPoint(Error);
 for (int i = 0; i != 8; ++i) {
-  Value *Out = Builder.CreateExtractValue(Call, i + 1);
-  Constant *Zero = llvm::Constant::getNullValue(Out->getType());
-  Value *Ptr = Builder.CreateConstGEP1_32(Out->getType(), Ops[0], i);
+  Constant *Zero = llvm::Constant::getNullValue(Ty);
+  Value *Ptr = Builder.CreateConstGEP1_32(Ty, Ops[0], i);
   Builder.CreateAlignedStore(Zero, Ptr, Align(16));
 }
 Builder.CreateBr(End);
diff --git a/clang/test/CodeGen/X86/keylocker.c 
b/clang/test/CodeGen/X86/keylocker.c
index e0003fabdcd95..8a7f8a793ef07 100644
--- a/clang/test/CodeGen/X86/keylocker.c
+++ b/clang/test/CodeGen/X86/keylocker.c
@@ -89,14 +89,14 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey, 
__m128i enkey_lo, __m128i
 // CHECK64-NEXT:[[TMP6:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey128(i32 [[TMP3]], <2 
x i64> [[TMP4]])
 // CHECK64-NEXT:[[TMP7:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 1
 // CHECK64-NEXT:store <2 x i64> [[TMP7]], ptr [[TMP5]], align 1
-// CHECK64-NEXT:[[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
-// CHECK64-NEXT:[[TMP10:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
-// CHECK64-NEXT:store <2 x i64> [[TMP9]], ptr [[TMP10]], align 1
-// CHECK64-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
-// CHECK64-NEXT:[[TMP13:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
-// CHECK64-NEXT:store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
-// CHECK64-NEXT:[[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
-// CHECK64-NEXT:ret i32 [[TMP15]]
+// CHECK64-NEXT:[[TMP8:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
+// CHECK64-NEXT:[[TMP9:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
+// CHECK64-NEXT:store <2 x i64> [[TMP8]], ptr [[TMP9]], align 1
+// CHECK64-NEXT:[[TMP10:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
+// CHECK64-NEXT:[[TMP11:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
+// CHECK64-NEXT:store <2 x i64> [[TMP10]], ptr [[TMP11]], align 1
+// CHECK64-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
+// CHECK64-NEXT:ret i32 [[TMP12]]
 //
 // CHECK32-LABEL: @test_encodekey128_u32(
 // CHECK32-NEXT:  entry:
@@ -121,14 +121,14 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey, 
__m128i enkey_lo, __m128i
 // CHECK32-NEXT:[[TMP6:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey128(i32 [[TMP3]], <2 
x i64> [[TMP4]])
 // CHECK32-NEXT:[[TMP7:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 1
 // CHECK32-NEXT:store <2 x i64> [[TMP7]], ptr [[TMP5]], align 1
-// CHECK32-NEXT:[[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
-// CHECK32-NEXT:[[TMP10:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
-// CHECK32-NEXT:store <2 x i64> [[TMP9]], ptr [[TMP10]], align 1
-// CHECK32-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
-// CHECK32-NEXT:[[TMP13:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
-// CHECK32-NEXT:store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
-// CHECK32-NEXT:[[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
-// CHECK32-NEXT:ret i32 [[TMP15]]
+// CHECK32-NEXT:[[TMP8:%.*]] = extractvalue { i32, <2 x i64>, <2 x i6

[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-11 Thread Phoebe Wang via cfe-commits

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


[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-11 Thread Phoebe Wang via cfe-commits




phoebewang wrote:

This can be `Ty` too.

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


[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-11 Thread Phoebe Wang via cfe-commits

https://github.com/phoebewang approved this pull request.

LGTM.

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


[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-08 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang-codegen

Author: Haocong Lu (Luhaocong)


Changes

This is a pre-commit of CIR codegen for `aesencwide/aesdecwide` builtin, remove 
useless `extractvalue` on clang CodeGen for this builtin.

---

Patch is 43.51 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/175113.diff


2 Files Affected:

- (modified) clang/lib/CodeGen/TargetBuiltins/X86.cpp (+2-3) 
- (modified) clang/test/CodeGen/X86/keylocker.c (+140-204) 


``diff
diff --git a/clang/lib/CodeGen/TargetBuiltins/X86.cpp 
b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
index 685040fc4524f..52b1921cab91c 100644
--- a/clang/lib/CodeGen/TargetBuiltins/X86.cpp
+++ b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
@@ -3194,9 +3194,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned 
BuiltinID,
 
 Builder.SetInsertPoint(Error);
 for (int i = 0; i != 8; ++i) {
-  Value *Out = Builder.CreateExtractValue(Call, i + 1);
-  Constant *Zero = llvm::Constant::getNullValue(Out->getType());
-  Value *Ptr = Builder.CreateConstGEP1_32(Out->getType(), Ops[0], i);
+  Constant *Zero = llvm::Constant::getNullValue(Ty);
+  Value *Ptr = Builder.CreateConstGEP1_32(Ty, Ops[0], i);
   Builder.CreateAlignedStore(Zero, Ptr, Align(16));
 }
 Builder.CreateBr(End);
diff --git a/clang/test/CodeGen/X86/keylocker.c 
b/clang/test/CodeGen/X86/keylocker.c
index e0003fabdcd95..8a7f8a793ef07 100644
--- a/clang/test/CodeGen/X86/keylocker.c
+++ b/clang/test/CodeGen/X86/keylocker.c
@@ -89,14 +89,14 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey, 
__m128i enkey_lo, __m128i
 // CHECK64-NEXT:[[TMP6:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey128(i32 [[TMP3]], <2 
x i64> [[TMP4]])
 // CHECK64-NEXT:[[TMP7:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 1
 // CHECK64-NEXT:store <2 x i64> [[TMP7]], ptr [[TMP5]], align 1
-// CHECK64-NEXT:[[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
-// CHECK64-NEXT:[[TMP10:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
-// CHECK64-NEXT:store <2 x i64> [[TMP9]], ptr [[TMP10]], align 1
-// CHECK64-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
-// CHECK64-NEXT:[[TMP13:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
-// CHECK64-NEXT:store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
-// CHECK64-NEXT:[[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
-// CHECK64-NEXT:ret i32 [[TMP15]]
+// CHECK64-NEXT:[[TMP8:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
+// CHECK64-NEXT:[[TMP9:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
+// CHECK64-NEXT:store <2 x i64> [[TMP8]], ptr [[TMP9]], align 1
+// CHECK64-NEXT:[[TMP10:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
+// CHECK64-NEXT:[[TMP11:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
+// CHECK64-NEXT:store <2 x i64> [[TMP10]], ptr [[TMP11]], align 1
+// CHECK64-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
+// CHECK64-NEXT:ret i32 [[TMP12]]
 //
 // CHECK32-LABEL: @test_encodekey128_u32(
 // CHECK32-NEXT:  entry:
@@ -121,14 +121,14 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey, 
__m128i enkey_lo, __m128i
 // CHECK32-NEXT:[[TMP6:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey128(i32 [[TMP3]], <2 
x i64> [[TMP4]])
 // CHECK32-NEXT:[[TMP7:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 1
 // CHECK32-NEXT:store <2 x i64> [[TMP7]], ptr [[TMP5]], align 1
-// CHECK32-NEXT:[[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
-// CHECK32-NEXT:[[TMP10:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
-// CHECK32-NEXT:store <2 x i64> [[TMP9]], ptr [[TMP10]], align 1
-// CHECK32-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
-// CHECK32-NEXT:[[TMP13:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
-// CHECK32-NEXT:store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
-// CHECK32-NEXT:[[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
-// CHECK32-NEXT:ret i32 [[TMP15]]
+// CHECK32-NEXT:[[TMP8:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
+// CHECK32-NEXT:[[TMP9:%.*]] = getelementptr i8, ptr [

[clang] [Clang][X86] Remove useless `extractvalue` on aesencwide/aesdecwide builtin CodeGen (PR #175113)

2026-01-08 Thread Haocong Lu via cfe-commits

https://github.com/Luhaocong created 
https://github.com/llvm/llvm-project/pull/175113

This is a pre-commit of CIR codegen for `aesencwide/aesdecwide` builtin, remove 
useless `extractvalue` on clang CodeGen for this builtin.

>From dcf668e2fd783ee6aea5613093439380517d2872 Mon Sep 17 00:00:00 2001
From: Haocong Lu 
Date: Fri, 9 Jan 2026 11:26:32 +0800
Subject: [PATCH] [Clang][X86] Remove useless `extractvalue` on
 aesencwide/aesdecwide builtin CodeGen

This is a pre-commit of CIR codegen for `aesencwide/aesdecwide` builtin, remove
useless `extractvalue` on clang CodeGen for this builtin.
---
 clang/lib/CodeGen/TargetBuiltins/X86.cpp |   5 +-
 clang/test/CodeGen/X86/keylocker.c   | 344 +--
 2 files changed, 142 insertions(+), 207 deletions(-)

diff --git a/clang/lib/CodeGen/TargetBuiltins/X86.cpp 
b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
index 685040fc4524f..52b1921cab91c 100644
--- a/clang/lib/CodeGen/TargetBuiltins/X86.cpp
+++ b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
@@ -3194,9 +3194,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned 
BuiltinID,
 
 Builder.SetInsertPoint(Error);
 for (int i = 0; i != 8; ++i) {
-  Value *Out = Builder.CreateExtractValue(Call, i + 1);
-  Constant *Zero = llvm::Constant::getNullValue(Out->getType());
-  Value *Ptr = Builder.CreateConstGEP1_32(Out->getType(), Ops[0], i);
+  Constant *Zero = llvm::Constant::getNullValue(Ty);
+  Value *Ptr = Builder.CreateConstGEP1_32(Ty, Ops[0], i);
   Builder.CreateAlignedStore(Zero, Ptr, Align(16));
 }
 Builder.CreateBr(End);
diff --git a/clang/test/CodeGen/X86/keylocker.c 
b/clang/test/CodeGen/X86/keylocker.c
index e0003fabdcd95..8a7f8a793ef07 100644
--- a/clang/test/CodeGen/X86/keylocker.c
+++ b/clang/test/CodeGen/X86/keylocker.c
@@ -89,14 +89,14 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey, 
__m128i enkey_lo, __m128i
 // CHECK64-NEXT:[[TMP6:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey128(i32 [[TMP3]], <2 
x i64> [[TMP4]])
 // CHECK64-NEXT:[[TMP7:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 1
 // CHECK64-NEXT:store <2 x i64> [[TMP7]], ptr [[TMP5]], align 1
-// CHECK64-NEXT:[[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
-// CHECK64-NEXT:[[TMP10:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
-// CHECK64-NEXT:store <2 x i64> [[TMP9]], ptr [[TMP10]], align 1
-// CHECK64-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
-// CHECK64-NEXT:[[TMP13:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
-// CHECK64-NEXT:store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
-// CHECK64-NEXT:[[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
-// CHECK64-NEXT:ret i32 [[TMP15]]
+// CHECK64-NEXT:[[TMP8:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
+// CHECK64-NEXT:[[TMP9:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
+// CHECK64-NEXT:store <2 x i64> [[TMP8]], ptr [[TMP9]], align 1
+// CHECK64-NEXT:[[TMP10:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
+// CHECK64-NEXT:[[TMP11:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
+// CHECK64-NEXT:store <2 x i64> [[TMP10]], ptr [[TMP11]], align 1
+// CHECK64-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 0
+// CHECK64-NEXT:ret i32 [[TMP12]]
 //
 // CHECK32-LABEL: @test_encodekey128_u32(
 // CHECK32-NEXT:  entry:
@@ -121,14 +121,14 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey, 
__m128i enkey_lo, __m128i
 // CHECK32-NEXT:[[TMP6:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey128(i32 [[TMP3]], <2 
x i64> [[TMP4]])
 // CHECK32-NEXT:[[TMP7:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 1
 // CHECK32-NEXT:store <2 x i64> [[TMP7]], ptr [[TMP5]], align 1
-// CHECK32-NEXT:[[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
-// CHECK32-NEXT:[[TMP10:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
-// CHECK32-NEXT:store <2 x i64> [[TMP9]], ptr [[TMP10]], align 1
-// CHECK32-NEXT:[[TMP12:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
-// CHECK32-NEXT:[[TMP13:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
-// CHECK32-NEXT:store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
-// CHECK32-NEXT:[[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <