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 <[email protected]>
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 i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 2
+// CHECK32-NEXT:    [[TMP9:%.*]] = getelementptr i8, ptr [[TMP5]], i32 16
+// CHECK32-NEXT:    store <2 x i64> [[TMP8]], ptr [[TMP9]], align 1
+// CHECK32-NEXT:    [[TMP10:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 3
+// CHECK32-NEXT:    [[TMP11:%.*]] = getelementptr i8, ptr [[TMP5]], i32 32
+// CHECK32-NEXT:    store <2 x i64> [[TMP10]], ptr [[TMP11]], 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]], 0
+// CHECK32-NEXT:    ret i32 [[TMP12]]
 //
 unsigned int test_encodekey128_u32(unsigned int htype, __m128i key, void *h) {
   return _mm_encodekey128_u32(htype, key, h);
@@ -163,17 +163,17 @@ unsigned int test_encodekey128_u32(unsigned int htype, 
__m128i key, void *h) {
 // CHECK64-NEXT:    [[TMP8:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey256(i32 
[[TMP4]], <2 x i64> [[TMP5]], <2 x i64> [[TMP6]])
 // CHECK64-NEXT:    [[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 1
 // CHECK64-NEXT:    store <2 x i64> [[TMP9]], ptr [[TMP7]], align 1
-// CHECK64-NEXT:    [[TMP11:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 2
-// CHECK64-NEXT:    [[TMP12:%.*]] = getelementptr i8, ptr [[TMP7]], i32 16
-// CHECK64-NEXT:    store <2 x i64> [[TMP11]], ptr [[TMP12]], align 1
-// CHECK64-NEXT:    [[TMP14:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 3
-// CHECK64-NEXT:    [[TMP15:%.*]] = getelementptr i8, ptr [[TMP7]], i32 32
+// CHECK64-NEXT:    [[TMP10:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 2
+// CHECK64-NEXT:    [[TMP11:%.*]] = getelementptr i8, ptr [[TMP7]], i32 16
+// 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>, <2 x i64> } [[TMP8]], 3
+// CHECK64-NEXT:    [[TMP13:%.*]] = getelementptr i8, ptr [[TMP7]], i32 32
+// CHECK64-NEXT:    store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
+// CHECK64-NEXT:    [[TMP14:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 4
+// CHECK64-NEXT:    [[TMP15:%.*]] = getelementptr i8, ptr [[TMP7]], i32 48
 // CHECK64-NEXT:    store <2 x i64> [[TMP14]], ptr [[TMP15]], align 1
-// CHECK64-NEXT:    [[TMP17:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 4
-// CHECK64-NEXT:    [[TMP18:%.*]] = getelementptr i8, ptr [[TMP7]], i32 48
-// CHECK64-NEXT:    store <2 x i64> [[TMP17]], ptr [[TMP18]], align 1
-// CHECK64-NEXT:    [[TMP20:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 0
-// CHECK64-NEXT:    ret i32 [[TMP20]]
+// CHECK64-NEXT:    [[TMP16:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 0
+// CHECK64-NEXT:    ret i32 [[TMP16]]
 //
 // CHECK32-LABEL: @test_encodekey256_u32(
 // CHECK32-NEXT:  entry:
@@ -204,17 +204,17 @@ unsigned int test_encodekey128_u32(unsigned int htype, 
__m128i key, void *h) {
 // CHECK32-NEXT:    [[TMP8:%.*]] = call { i32, <2 x i64>, <2 x i64>, <2 x 
i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.x86.encodekey256(i32 
[[TMP4]], <2 x i64> [[TMP5]], <2 x i64> [[TMP6]])
 // CHECK32-NEXT:    [[TMP9:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 1
 // CHECK32-NEXT:    store <2 x i64> [[TMP9]], ptr [[TMP7]], align 1
-// CHECK32-NEXT:    [[TMP11:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 2
-// CHECK32-NEXT:    [[TMP12:%.*]] = getelementptr i8, ptr [[TMP7]], i32 16
-// CHECK32-NEXT:    store <2 x i64> [[TMP11]], ptr [[TMP12]], align 1
-// CHECK32-NEXT:    [[TMP14:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 3
-// CHECK32-NEXT:    [[TMP15:%.*]] = getelementptr i8, ptr [[TMP7]], i32 32
+// CHECK32-NEXT:    [[TMP10:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 2
+// CHECK32-NEXT:    [[TMP11:%.*]] = getelementptr i8, ptr [[TMP7]], i32 16
+// CHECK32-NEXT:    store <2 x i64> [[TMP10]], ptr [[TMP11]], 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>, <2 x i64> } [[TMP8]], 3
+// CHECK32-NEXT:    [[TMP13:%.*]] = getelementptr i8, ptr [[TMP7]], i32 32
+// CHECK32-NEXT:    store <2 x i64> [[TMP12]], ptr [[TMP13]], align 1
+// CHECK32-NEXT:    [[TMP14:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 4
+// CHECK32-NEXT:    [[TMP15:%.*]] = getelementptr i8, ptr [[TMP7]], i32 48
 // CHECK32-NEXT:    store <2 x i64> [[TMP14]], ptr [[TMP15]], align 1
-// CHECK32-NEXT:    [[TMP17:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 4
-// CHECK32-NEXT:    [[TMP18:%.*]] = getelementptr i8, ptr [[TMP7]], i32 48
-// CHECK32-NEXT:    store <2 x i64> [[TMP17]], ptr [[TMP18]], align 1
-// CHECK32-NEXT:    [[TMP20:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 0
-// CHECK32-NEXT:    ret i32 [[TMP20]]
+// CHECK32-NEXT:    [[TMP16:%.*]] = extractvalue { i32, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 0
+// CHECK32-NEXT:    ret i32 [[TMP16]]
 //
 unsigned int test_encodekey256_u32(unsigned int htype, __m128i key_lo, __m128i 
key_hi, void *h) {
   return _mm_encodekey256_u32(htype, key_lo, key_hi, h);
@@ -581,33 +581,25 @@ unsigned char test_mm_aesdec128kl_u8(__m128i *odata, 
__m128i idata, const void *
 // CHECK64-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESENCWIDE128KL_U8_EXIT:%.*]]
 // CHECK64:       aesencwide128kl_error.i:
-// CHECK64-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK64-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK64-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK64-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK64-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK64-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK64-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK64-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK64-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK64-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK64-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK64-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK64-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESENCWIDE128KL_U8_EXIT]]
 // CHECK64:       _mm_aesencwide128kl_u8.exit:
-// CHECK64-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK64-NEXT:    ret i8 [[TMP54]]
+// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK64-NEXT:    ret i8 [[TMP46]]
 //
 // CHECK32-LABEL: @test__mm_aesencwide128kl_u8(
 // CHECK32-NEXT:  entry:
@@ -674,33 +666,25 @@ unsigned char test_mm_aesdec128kl_u8(__m128i *odata, 
__m128i idata, const void *
 // CHECK32-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESENCWIDE128KL_U8_EXIT:%.*]]
 // CHECK32:       aesencwide128kl_error.i:
-// CHECK32-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK32-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK32-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK32-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK32-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK32-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK32-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK32-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK32-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK32-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK32-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK32-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK32-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESENCWIDE128KL_U8_EXIT]]
 // CHECK32:       _mm_aesencwide128kl_u8.exit:
-// CHECK32-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK32-NEXT:    ret i8 [[TMP54]]
+// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK32-NEXT:    ret i8 [[TMP46]]
 //
 unsigned char test__mm_aesencwide128kl_u8(__m128i odata[8], const __m128i 
idata[8], const void* h) {
   return _mm_aesencwide128kl_u8(odata, idata, h);
@@ -771,33 +755,25 @@ unsigned char test__mm_aesencwide128kl_u8(__m128i 
odata[8], const __m128i idata[
 // CHECK64-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESDECWIDE128KL_U8_EXIT:%.*]]
 // CHECK64:       aesdecwide128kl_error.i:
-// CHECK64-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK64-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK64-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK64-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK64-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK64-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK64-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK64-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK64-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK64-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK64-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK64-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK64-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESDECWIDE128KL_U8_EXIT]]
 // CHECK64:       _mm_aesdecwide128kl_u8.exit:
-// CHECK64-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK64-NEXT:    ret i8 [[TMP54]]
+// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK64-NEXT:    ret i8 [[TMP46]]
 //
 // CHECK32-LABEL: @test__mm_aesdecwide128kl_u8(
 // CHECK32-NEXT:  entry:
@@ -864,33 +840,25 @@ unsigned char test__mm_aesencwide128kl_u8(__m128i 
odata[8], const __m128i idata[
 // CHECK32-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESDECWIDE128KL_U8_EXIT:%.*]]
 // CHECK32:       aesdecwide128kl_error.i:
-// CHECK32-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK32-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK32-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK32-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK32-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK32-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK32-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK32-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK32-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK32-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK32-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK32-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK32-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESDECWIDE128KL_U8_EXIT]]
 // CHECK32:       _mm_aesdecwide128kl_u8.exit:
-// CHECK32-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK32-NEXT:    ret i8 [[TMP54]]
+// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK32-NEXT:    ret i8 [[TMP46]]
 //
 unsigned char test__mm_aesdecwide128kl_u8(__m128i odata[8], const __m128i 
idata[8], const void* h) {
   return _mm_aesdecwide128kl_u8(odata, idata, h);
@@ -961,33 +929,25 @@ unsigned char test__mm_aesdecwide128kl_u8(__m128i 
odata[8], const __m128i idata[
 // CHECK64-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESENCWIDE256KL_U8_EXIT:%.*]]
 // CHECK64:       aesencwide256kl_error.i:
-// CHECK64-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK64-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK64-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK64-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK64-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK64-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK64-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK64-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK64-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK64-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK64-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK64-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK64-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESENCWIDE256KL_U8_EXIT]]
 // CHECK64:       _mm_aesencwide256kl_u8.exit:
-// CHECK64-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK64-NEXT:    ret i8 [[TMP54]]
+// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK64-NEXT:    ret i8 [[TMP46]]
 //
 // CHECK32-LABEL: @test__mm_aesencwide256kl_u8(
 // CHECK32-NEXT:  entry:
@@ -1054,33 +1014,25 @@ unsigned char test__mm_aesdecwide128kl_u8(__m128i 
odata[8], const __m128i idata[
 // CHECK32-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESENCWIDE256KL_U8_EXIT:%.*]]
 // CHECK32:       aesencwide256kl_error.i:
-// CHECK32-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK32-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK32-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK32-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK32-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK32-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK32-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK32-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK32-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK32-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK32-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK32-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK32-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESENCWIDE256KL_U8_EXIT]]
 // CHECK32:       _mm_aesencwide256kl_u8.exit:
-// CHECK32-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK32-NEXT:    ret i8 [[TMP54]]
+// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK32-NEXT:    ret i8 [[TMP46]]
 //
 unsigned char test__mm_aesencwide256kl_u8(__m128i odata[8], const __m128i 
idata[8], const void* h) {
   return _mm_aesencwide256kl_u8(odata, idata, h);
@@ -1151,33 +1103,25 @@ unsigned char test__mm_aesencwide256kl_u8(__m128i 
odata[8], const __m128i idata[
 // CHECK64-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESDECWIDE256KL_U8_EXIT:%.*]]
 // CHECK64:       aesdecwide256kl_error.i:
-// CHECK64-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK64-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK64-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK64-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK64-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK64-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK64-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK64-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK64-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK64-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK64-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK64-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK64-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK64-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK64-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK64-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK64-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK64-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK64-NEXT:    br label [[_MM_AESDECWIDE256KL_U8_EXIT]]
 // CHECK64:       _mm_aesdecwide256kl_u8.exit:
-// CHECK64-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK64-NEXT:    ret i8 [[TMP54]]
+// CHECK64-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK64-NEXT:    ret i8 [[TMP46]]
 //
 // CHECK32-LABEL: @test__mm_aesdecwide256kl_u8(
 // CHECK32-NEXT:  entry:
@@ -1244,33 +1188,25 @@ unsigned char test__mm_aesencwide256kl_u8(__m128i 
odata[8], const __m128i idata[
 // CHECK32-NEXT:    store <2 x i64> [[TMP37]], ptr [[TMP38]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESDECWIDE256KL_U8_EXIT:%.*]]
 // CHECK32:       aesdecwide256kl_error.i:
-// CHECK32-NEXT:    [[TMP39:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 1
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP3]], align 16
-// CHECK32-NEXT:    [[TMP40:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 2
-// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    [[TMP39:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
1
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP39]], align 16
+// CHECK32-NEXT:    [[TMP40:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP40]], align 16
+// CHECK32-NEXT:    [[TMP41:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP41]], align 16
-// CHECK32-NEXT:    [[TMP42:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 3
-// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
2
+// CHECK32-NEXT:    [[TMP42:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP42]], align 16
+// CHECK32-NEXT:    [[TMP43:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP43]], align 16
-// CHECK32-NEXT:    [[TMP44:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 4
-// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
3
+// CHECK32-NEXT:    [[TMP44:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
+// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP44]], align 16
+// CHECK32-NEXT:    [[TMP45:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
 // CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP45]], align 16
-// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 5
-// CHECK32-NEXT:    [[TMP47:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
4
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP47]], align 16
-// CHECK32-NEXT:    [[TMP48:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 6
-// CHECK32-NEXT:    [[TMP49:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
5
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP49]], align 16
-// CHECK32-NEXT:    [[TMP50:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 7
-// CHECK32-NEXT:    [[TMP51:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
6
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP51]], align 16
-// CHECK32-NEXT:    [[TMP52:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 8
-// CHECK32-NEXT:    [[TMP53:%.*]] = getelementptr <2 x i64>, ptr [[TMP3]], i32 
7
-// CHECK32-NEXT:    store <2 x i64> zeroinitializer, ptr [[TMP53]], align 16
 // CHECK32-NEXT:    br label [[_MM_AESDECWIDE256KL_U8_EXIT]]
 // CHECK32:       _mm_aesdecwide256kl_u8.exit:
-// CHECK32-NEXT:    [[TMP54:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
-// CHECK32-NEXT:    ret i8 [[TMP54]]
+// CHECK32-NEXT:    [[TMP46:%.*]] = extractvalue { i8, <2 x i64>, <2 x i64>, 
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP21]], 0
+// CHECK32-NEXT:    ret i8 [[TMP46]]
 //
 unsigned char test__mm_aesdecwide256kl_u8(__m128i odata[8], const __m128i 
idata[8], const void* h) {
   return _mm_aesdecwide256kl_u8(odata, idata, h);

>From 55fe2dbe27779e7f8e39e1d1723eac01551ef8b4 Mon Sep 17 00:00:00 2001
From: Haocong Lu <[email protected]>
Date: Mon, 12 Jan 2026 10:56:08 +0800
Subject: [PATCH 2/2] [Clang][X86] Address comment

---
 clang/lib/CodeGen/TargetBuiltins/X86.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/CodeGen/TargetBuiltins/X86.cpp 
b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
index 52b1921cab91c..9645ed87b8ef3 100644
--- a/clang/lib/CodeGen/TargetBuiltins/X86.cpp
+++ b/clang/lib/CodeGen/TargetBuiltins/X86.cpp
@@ -3187,7 +3187,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned 
BuiltinID,
     Builder.SetInsertPoint(NoError);
     for (int i = 0; i != 8; ++i) {
       Value *Extract = Builder.CreateExtractValue(Call, i + 1);
-      Value *Ptr = Builder.CreateConstGEP1_32(Extract->getType(), Ops[0], i);
+      Value *Ptr = Builder.CreateConstGEP1_32(Ty, Ops[0], i);
       Builder.CreateAlignedStore(Extract, Ptr, Align(16));
     }
     Builder.CreateBr(End);

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

Reply via email to