[clang] bdce8d4 - Revert "[X86] Adjust Keylocker handle mem size"

Craig Topper via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 13 14:52:26 PDT 2021


When reverting patches, please include the reason in the commit message.

~Craig


On Mon, Sep 13, 2021 at 3:01 AM Xiang1 Zhang via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

>
> Author: Xiang1 Zhang
> Date: 2021-09-13T18:00:46+08:00
> New Revision: bdce8d40c6da56f1c95a8d7bfeac12b1ffce79cf
>
> URL:
> https://github.com/llvm/llvm-project/commit/bdce8d40c6da56f1c95a8d7bfeac12b1ffce79cf
> DIFF:
> https://github.com/llvm/llvm-project/commit/bdce8d40c6da56f1c95a8d7bfeac12b1ffce79cf.diff
>
> LOG: Revert "[X86] Adjust Keylocker handle mem size"
>
> This reverts commit 3731de6b7f2d42d40151f9574636bc4d5ccfa5e3.
>
> Added:
>
>
> Modified:
>     clang/lib/CodeGen/CGBuiltin.cpp
>     clang/lib/Headers/keylockerintrin.h
>     clang/test/CodeGen/X86/keylocker.c
>     llvm/test/CodeGen/X86/keylocker-intrinsics.ll
>
> Removed:
>
>
>
>
> ################################################################################
> diff  --git a/clang/lib/CodeGen/CGBuiltin.cpp
> b/clang/lib/CodeGen/CGBuiltin.cpp
> index d485e8e767692..727fc19f1a23f 100644
> --- a/clang/lib/CodeGen/CGBuiltin.cpp
> +++ b/clang/lib/CodeGen/CGBuiltin.cpp
> @@ -14905,7 +14905,7 @@ Value
> *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
>
>      Value *Call = Builder.CreateCall(CGM.getIntrinsic(IID), {Ops[0],
> Ops[1]});
>
> -    for (int i = 0; i < 3; ++i) {
> +    for (int i = 0; i < 6; ++i) {
>        Value *Extract = Builder.CreateExtractValue(Call, i + 1);
>        Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[2], i * 16);
>        Ptr = Builder.CreateBitCast(
> @@ -14921,7 +14921,7 @@ Value
> *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
>      Value *Call =
>          Builder.CreateCall(CGM.getIntrinsic(IID), {Ops[0], Ops[1],
> Ops[2]});
>
> -    for (int i = 0; i < 4; ++i) {
> +    for (int i = 0; i < 7; ++i) {
>        Value *Extract = Builder.CreateExtractValue(Call, i + 1);
>        Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[3], i * 16);
>        Ptr = Builder.CreateBitCast(
>
> diff  --git a/clang/lib/Headers/keylockerintrin.h
> b/clang/lib/Headers/keylockerintrin.h
> index ad9428e6c8b57..68b0a5689618a 100644
> --- a/clang/lib/Headers/keylockerintrin.h
> +++ b/clang/lib/Headers/keylockerintrin.h
> @@ -99,7 +99,7 @@ _mm_loadiwkey (unsigned int __ctl, __m128i __intkey,
>  }
>
>  /// Wrap a 128-bit AES key from __key into a key handle and output in
> -/// ((__m128i*)__h) to ((__m128i*)__h) + 2  and a 32-bit value as return.
> +/// ((__m128i*)__h) to ((__m128i*)__h) + 5  and a 32-bit value as return.
>  /// The explicit source operand __htype specifies handle restrictions.
>  ///
>  /// \headerfile <x86intrin.h>
> @@ -120,6 +120,9 @@ _mm_loadiwkey (unsigned int __ctl, __m128i __intkey,
>  /// MEM[__h+127:__h] := Handle[127:0]   // AAD
>  /// MEM[__h+255:__h+128] := Handle[255:128] // Integrity Tag
>  /// MEM[__h+383:__h+256] := Handle[383:256] // CipherText
> +/// MEM[__h+511:__h+384] := 0 // Reserved for future usage
> +/// MEM[__h+639:__h+512] := 0 // Reserved for future usage
> +/// MEM[__h+767:__h+640] := 0 // Reserved for future usage
>  /// OF := 0
>  /// SF := 0
>  /// ZF := 0
> @@ -133,7 +136,7 @@ _mm_encodekey128_u32(unsigned int __htype, __m128i
> __key, void *__h) {
>  }
>
>  /// Wrap a 256-bit AES key from __key_hi:__key_lo into a key handle, then
> -/// output handle in ((__m128i*)__h) to ((__m128i*)__h) + 3 and
> +/// output handle in ((__m128i*)__h) to ((__m128i*)__h) + 6 and
>  /// a 32-bit value as return.
>  /// The explicit source operand __htype specifies handle restrictions.
>  ///
> @@ -157,6 +160,9 @@ _mm_encodekey128_u32(unsigned int __htype, __m128i
> __key, void *__h) {
>  /// MEM[__h+255:__h+128] := Handle[255:128] // Tag
>  /// MEM[__h+383:__h+256] := Handle[383:256] // CipherText[127:0]
>  /// MEM[__h+511:__h+384] := Handle[511:384] // CipherText[255:128]
> +/// MEM[__h+639:__h+512] := 0 // Reserved for future usage
> +/// MEM[__h+767:__h+640] := 0 // Reserved for future usage
> +/// MEM[__h+895:__h+768] := 0 Integrity// Reserved for future usage
>  /// OF := 0
>  /// SF := 0
>  /// ZF := 0
>
> diff  --git a/clang/test/CodeGen/X86/keylocker.c
> b/clang/test/CodeGen/X86/keylocker.c
> index a87281c5bd3fc..ded6e57bfb8b6 100644
> --- a/clang/test/CodeGen/X86/keylocker.c
> +++ b/clang/test/CodeGen/X86/keylocker.c
> @@ -98,8 +98,20 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey,
> __m128i enkey_lo, __m128i
>  // CHECK64-NEXT:    [[TMP13:%.*]] = getelementptr i8, i8* [[TMP5]], i32 32
>  // CHECK64-NEXT:    [[TMP14:%.*]] = bitcast i8* [[TMP13]] to <2 x i64>*
>  // CHECK64-NEXT:    store <2 x i64> [[TMP12]], <2 x i64>* [[TMP14]],
> 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:    [[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 4
> +// CHECK64-NEXT:    [[TMP16:%.*]] = getelementptr i8, i8* [[TMP5]], i32 48
> +// CHECK64-NEXT:    [[TMP17:%.*]] = bitcast i8* [[TMP16]] to <2 x i64>*
> +// CHECK64-NEXT:    store <2 x i64> [[TMP15]], <2 x i64>* [[TMP17]],
> align 1
> +// CHECK64-NEXT:    [[TMP18:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 5
> +// CHECK64-NEXT:    [[TMP19:%.*]] = getelementptr i8, i8* [[TMP5]], i32 64
> +// CHECK64-NEXT:    [[TMP20:%.*]] = bitcast i8* [[TMP19]] to <2 x i64>*
> +// CHECK64-NEXT:    store <2 x i64> [[TMP18]], <2 x i64>* [[TMP20]],
> align 1
> +// CHECK64-NEXT:    [[TMP21:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 6
> +// CHECK64-NEXT:    [[TMP22:%.*]] = getelementptr i8, i8* [[TMP5]], i32 80
> +// CHECK64-NEXT:    [[TMP23:%.*]] = bitcast i8* [[TMP22]] to <2 x i64>*
> +// CHECK64-NEXT:    store <2 x i64> [[TMP21]], <2 x i64>* [[TMP23]],
> align 1
> +// CHECK64-NEXT:    [[TMP24:%.*]] = 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 [[TMP24]]
>  //
>  // CHECK32-LABEL: @test_encodekey128_u32(
>  // CHECK32-NEXT:  entry:
> @@ -133,8 +145,20 @@ void test_loadiwkey(unsigned int ctl, __m128i intkey,
> __m128i enkey_lo, __m128i
>  // CHECK32-NEXT:    [[TMP13:%.*]] = getelementptr i8, i8* [[TMP5]], i32 32
>  // CHECK32-NEXT:    [[TMP14:%.*]] = bitcast i8* [[TMP13]] to <2 x i64>*
>  // CHECK32-NEXT:    store <2 x i64> [[TMP12]], <2 x i64>* [[TMP14]],
> 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:    [[TMP15:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 4
> +// CHECK32-NEXT:    [[TMP16:%.*]] = getelementptr i8, i8* [[TMP5]], i32 48
> +// CHECK32-NEXT:    [[TMP17:%.*]] = bitcast i8* [[TMP16]] to <2 x i64>*
> +// CHECK32-NEXT:    store <2 x i64> [[TMP15]], <2 x i64>* [[TMP17]],
> align 1
> +// CHECK32-NEXT:    [[TMP18:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 5
> +// CHECK32-NEXT:    [[TMP19:%.*]] = getelementptr i8, i8* [[TMP5]], i32 64
> +// CHECK32-NEXT:    [[TMP20:%.*]] = bitcast i8* [[TMP19]] to <2 x i64>*
> +// CHECK32-NEXT:    store <2 x i64> [[TMP18]], <2 x i64>* [[TMP20]],
> align 1
> +// CHECK32-NEXT:    [[TMP21:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP6]], 6
> +// CHECK32-NEXT:    [[TMP22:%.*]] = getelementptr i8, i8* [[TMP5]], i32 80
> +// CHECK32-NEXT:    [[TMP23:%.*]] = bitcast i8* [[TMP22]] to <2 x i64>*
> +// CHECK32-NEXT:    store <2 x i64> [[TMP21]], <2 x i64>* [[TMP23]],
> align 1
> +// CHECK32-NEXT:    [[TMP24:%.*]] = 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 [[TMP24]]
>  //
>  unsigned int test_encodekey128_u32(unsigned int htype, __m128i key, void
> *h) {
>    return _mm_encodekey128_u32(htype, key, h);
> @@ -182,8 +206,20 @@ unsigned int test_encodekey128_u32(unsigned int
> htype, __m128i key, void *h) {
>  // CHECK64-NEXT:    [[TMP18:%.*]] = getelementptr i8, i8* [[TMP7]], i32 48
>  // CHECK64-NEXT:    [[TMP19:%.*]] = bitcast i8* [[TMP18]] to <2 x i64>*
>  // CHECK64-NEXT:    store <2 x i64> [[TMP17]], <2 x i64>* [[TMP19]],
> 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:    [[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]], 5
> +// CHECK64-NEXT:    [[TMP21:%.*]] = getelementptr i8, i8* [[TMP7]], i32 64
> +// CHECK64-NEXT:    [[TMP22:%.*]] = bitcast i8* [[TMP21]] to <2 x i64>*
> +// CHECK64-NEXT:    store <2 x i64> [[TMP20]], <2 x i64>* [[TMP22]],
> align 1
> +// CHECK64-NEXT:    [[TMP23:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 6
> +// CHECK64-NEXT:    [[TMP24:%.*]] = getelementptr i8, i8* [[TMP7]], i32 80
> +// CHECK64-NEXT:    [[TMP25:%.*]] = bitcast i8* [[TMP24]] to <2 x i64>*
> +// CHECK64-NEXT:    store <2 x i64> [[TMP23]], <2 x i64>* [[TMP25]],
> align 1
> +// CHECK64-NEXT:    [[TMP26:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 7
> +// CHECK64-NEXT:    [[TMP27:%.*]] = getelementptr i8, i8* [[TMP7]], i32 96
> +// CHECK64-NEXT:    [[TMP28:%.*]] = bitcast i8* [[TMP27]] to <2 x i64>*
> +// CHECK64-NEXT:    store <2 x i64> [[TMP26]], <2 x i64>* [[TMP28]],
> align 1
> +// CHECK64-NEXT:    [[TMP29:%.*]] = 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 [[TMP29]]
>  //
>  // CHECK32-LABEL: @test_encodekey256_u32(
>  // CHECK32-NEXT:  entry:
> @@ -227,8 +263,20 @@ unsigned int test_encodekey128_u32(unsigned int
> htype, __m128i key, void *h) {
>  // CHECK32-NEXT:    [[TMP18:%.*]] = getelementptr i8, i8* [[TMP7]], i32 48
>  // CHECK32-NEXT:    [[TMP19:%.*]] = bitcast i8* [[TMP18]] to <2 x i64>*
>  // CHECK32-NEXT:    store <2 x i64> [[TMP17]], <2 x i64>* [[TMP19]],
> 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:    [[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]], 5
> +// CHECK32-NEXT:    [[TMP21:%.*]] = getelementptr i8, i8* [[TMP7]], i32 64
> +// CHECK32-NEXT:    [[TMP22:%.*]] = bitcast i8* [[TMP21]] to <2 x i64>*
> +// CHECK32-NEXT:    store <2 x i64> [[TMP20]], <2 x i64>* [[TMP22]],
> align 1
> +// CHECK32-NEXT:    [[TMP23:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 6
> +// CHECK32-NEXT:    [[TMP24:%.*]] = getelementptr i8, i8* [[TMP7]], i32 80
> +// CHECK32-NEXT:    [[TMP25:%.*]] = bitcast i8* [[TMP24]] to <2 x i64>*
> +// CHECK32-NEXT:    store <2 x i64> [[TMP23]], <2 x i64>* [[TMP25]],
> align 1
> +// CHECK32-NEXT:    [[TMP26:%.*]] = extractvalue { i32, <2 x i64>, <2 x
> i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[TMP8]], 7
> +// CHECK32-NEXT:    [[TMP27:%.*]] = getelementptr i8, i8* [[TMP7]], i32 96
> +// CHECK32-NEXT:    [[TMP28:%.*]] = bitcast i8* [[TMP27]] to <2 x i64>*
> +// CHECK32-NEXT:    store <2 x i64> [[TMP26]], <2 x i64>* [[TMP28]],
> align 1
> +// CHECK32-NEXT:    [[TMP29:%.*]] = 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 [[TMP29]]
>  //
>  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);
>
> diff  --git a/llvm/test/CodeGen/X86/keylocker-intrinsics.ll
> b/llvm/test/CodeGen/X86/keylocker-intrinsics.ll
> index 6f900e456a662..2fe034e745d2c 100644
> --- a/llvm/test/CodeGen/X86/keylocker-intrinsics.ll
> +++ b/llvm/test/CodeGen/X86/keylocker-intrinsics.ll
> @@ -36,24 +36,40 @@ entry:
>  define i32 @test_encodekey128_u32(i32 %htype, <2 x i64> %key, <2 x i64>*
> nocapture %h0, <2 x i64>* nocapture %h1, <2 x i64>* nocapture %h2, <2 x
> i64>* nocapture %h3, <2 x i64>* nocapture %h4, <2 x i64>* nocapture %h5)
> nounwind {
>  ; X64-LABEL: test_encodekey128_u32:
>  ; X64:       # %bb.0: # %entry
> +; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r10
>  ; X64-NEXT:    encodekey128 %edi, %eax
>  ; X64-NEXT:    movaps %xmm0, (%rsi)
>  ; X64-NEXT:    movaps %xmm1, (%rdx)
>  ; X64-NEXT:    movaps %xmm2, (%rcx)
> +; X64-NEXT:    movaps %xmm4, (%r8)
> +; X64-NEXT:    movaps %xmm5, (%r9)
> +; X64-NEXT:    movaps %xmm6, (%r10)
>  ; X64-NEXT:    retq
>  ;
>  ; X32-LABEL: test_encodekey128_u32:
>  ; X32:       # %bb.0: # %entry
> +; X32-NEXT:    pushl %ebp
> +; X32-NEXT:    pushl %ebx
> +; X32-NEXT:    pushl %edi
>  ; X32-NEXT:    pushl %esi
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
> +; X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
> +; X32-NEXT:    movl {{[0-9]+}}(%esp), %ebx
> +; X32-NEXT:    movl {{[0-9]+}}(%esp), %ebp
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
>  ; X32-NEXT:    encodekey128 %eax, %eax
> -; X32-NEXT:    vmovaps %xmm0, (%esi)
> -; X32-NEXT:    vmovaps %xmm1, (%edx)
> -; X32-NEXT:    vmovaps %xmm2, (%ecx)
> +; X32-NEXT:    vmovaps %xmm0, (%ebp)
> +; X32-NEXT:    vmovaps %xmm1, (%ebx)
> +; X32-NEXT:    vmovaps %xmm2, (%edi)
> +; X32-NEXT:    vmovaps %xmm4, (%esi)
> +; X32-NEXT:    vmovaps %xmm5, (%edx)
> +; X32-NEXT:    vmovaps %xmm6, (%ecx)
>  ; X32-NEXT:    popl %esi
> +; X32-NEXT:    popl %edi
> +; X32-NEXT:    popl %ebx
> +; X32-NEXT:    popl %ebp
>  ; X32-NEXT:    retl
>  entry:
>    %0 = tail call { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2 x
> i64>, <2 x i64> } @llvm.x86.encodekey128(i32 %htype, <2 x i64> %key)
> @@ -63,36 +79,53 @@ entry:
>    store <2 x i64> %2, <2 x i64>* %h1, align 16
>    %3 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64> } %0, 3
>    store <2 x i64> %3, <2 x i64>* %h2, align 16
> -  %4 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64> } %0, 0
> -  ret i32 %4
> +  %4 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64> } %0, 4
> +  store <2 x i64> %4, <2 x i64>* %h3, align 16
> +  %5 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64> } %0, 5
> +  store <2 x i64> %5, <2 x i64>* %h4, align 16
> +  %6 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64> } %0, 6
> +  store <2 x i64> %6, <2 x i64>* %h5, align 16
> +  %7 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64> } %0, 0
> +  ret i32 %7
>  }
>
>  define i32 @test_encodekey256_u32(i32 %htype, <2 x i64> %key_lo, <2 x
> i64> %key_hi, <2 x i64>* nocapture %h0, <2 x i64>* nocapture %h1, <2 x
> i64>* nocapture %h2, <2 x i64>* nocapture %h3, <2 x i64>* nocapture %h4, <2
> x i64>* nocapture %h5, <2 x      i64>* nocapture readnone %h6) nounwind {
>  ; X64-LABEL: test_encodekey256_u32:
>  ; X64:       # %bb.0: # %entry
> +; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r10
>  ; X64-NEXT:    encodekey256 %edi, %eax
>  ; X64-NEXT:    movaps %xmm0, (%rsi)
>  ; X64-NEXT:    movaps %xmm1, (%rdx)
>  ; X64-NEXT:    movaps %xmm2, (%rcx)
>  ; X64-NEXT:    movaps %xmm3, (%r8)
> +; X64-NEXT:    movaps %xmm4, (%r9)
> +; X64-NEXT:    movaps %xmm5, (%r10)
>  ; X64-NEXT:    retq
>  ;
>  ; X32-LABEL: test_encodekey256_u32:
>  ; X32:       # %bb.0: # %entry
> +; X32-NEXT:    pushl %ebp
> +; X32-NEXT:    pushl %ebx
>  ; X32-NEXT:    pushl %edi
>  ; X32-NEXT:    pushl %esi
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edx
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
> +; X32-NEXT:    movl {{[0-9]+}}(%esp), %ebx
> +; X32-NEXT:    movl {{[0-9]+}}(%esp), %ebp
>  ; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
>  ; X32-NEXT:    encodekey256 %eax, %eax
> -; X32-NEXT:    vmovaps %xmm0, (%edi)
> -; X32-NEXT:    vmovaps %xmm1, (%esi)
> -; X32-NEXT:    vmovaps %xmm2, (%edx)
> -; X32-NEXT:    vmovaps %xmm3, (%ecx)
> +; X32-NEXT:    vmovaps %xmm0, (%ebp)
> +; X32-NEXT:    vmovaps %xmm1, (%ebx)
> +; X32-NEXT:    vmovaps %xmm2, (%edi)
> +; X32-NEXT:    vmovaps %xmm3, (%esi)
> +; X32-NEXT:    vmovaps %xmm4, (%edx)
> +; X32-NEXT:    vmovaps %xmm5, (%ecx)
>  ; X32-NEXT:    popl %esi
>  ; X32-NEXT:    popl %edi
> +; X32-NEXT:    popl %ebx
> +; X32-NEXT:    popl %ebp
>  ; X32-NEXT:    retl
>  entry:
>    %0 = tail 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 %htype, <2 x i64>
> %key_lo, <2 x i64> %key_hi)
> @@ -104,8 +137,12 @@ entry:
>    store <2 x i64> %3, <2 x i64>* %h2, align 16
>    %4 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64>, <2 x i64> } %0, 4
>    store <2 x i64> %4, <2 x i64>* %h3, align 16
> -  %5 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64>, <2 x i64> } %0, 0
> -  ret i32 %5
> +  %5 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64>, <2 x i64> } %0, 5
> +  store <2 x i64> %5, <2 x i64>* %h4, align 16
> +  %6 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64>, <2 x i64> } %0, 6
> +  store <2 x i64> %6, <2 x i64>* %h5, align 16
> +  %7 = extractvalue { i32, <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, <2
> x i64>, <2 x i64>, <2 x i64> } %0, 0
> +  ret i32 %7
>  }
>
>  define i8 @test_mm_aesenc128kl_u8(<2 x i64> %data, i8* %h, <2 x i64>*
> %out) {
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210913/a1eb9def/attachment-0001.html>


More information about the cfe-commits mailing list