From 7fa46d07d99ef271bd50aa7db46a77e71d544ae4 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Sun, 5 Feb 2017 18:33:31 +0000 Subject: [PATCH] [X86] Fix printing of sha256rnds2 to include the implicit %xmm0 argument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294132 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86InstrSSE.td | 16 ++++++++++------ test/CodeGen/X86/sha.ll | 6 +++--- test/MC/Disassembler/X86/x86-64.txt | 4 ++-- test/MC/X86/x86_64-encoding.s | 8 ++++---- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/Target/X86/X86InstrSSE.td b/lib/Target/X86/X86InstrSSE.td index c91889f2240..4f8e7c95d91 100644 --- a/lib/Target/X86/X86InstrSSE.td +++ b/lib/Target/X86/X86InstrSSE.td @@ -7479,14 +7479,18 @@ multiclass SHAI_binop Opc, string OpcodeStr, Intrinsic IntId, bit UsesXMM0 = 0> { def rr : I, T8; def rm : I; -def : InstAlias<"sha256rnds2\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}", - (SHA256RNDS2rm VR128:$dst, i128mem:$src2)>; +def : InstAlias<"sha256rnds2\t{$src2, $dst|$dst, $src2}", + (SHA256RNDS2rr VR128:$dst, VR128:$src2), 0>; +def : InstAlias<"sha256rnds2\t{$src2, $dst|$dst, $src2}", + (SHA256RNDS2rm VR128:$dst, i128mem:$src2), 0>; //===----------------------------------------------------------------------===// // AES-NI Instructions diff --git a/test/CodeGen/X86/sha.ll b/test/CodeGen/X86/sha.ll index fe42637bc53..eb196647049 100644 --- a/test/CodeGen/X86/sha.ll +++ b/test/CodeGen/X86/sha.ll @@ -86,7 +86,7 @@ entry: ; CHECK: test_sha256rnds2rr ; CHECK: movaps %xmm0, [[XMM_TMP1:%xmm[1-9][0-9]?]] ; CHECK: movaps %xmm2, %xmm0 - ; CHECK: sha256rnds2 %xmm1, [[XMM_TMP1]] + ; CHECK: sha256rnds2 %xmm0, %xmm1, [[XMM_TMP1]] } define <4 x i32> @test_sha256rnds2rm(<4 x i32> %a, <4 x i32>* %b, <4 x i32> %c) nounwind uwtable { @@ -97,7 +97,7 @@ entry: ; CHECK: test_sha256rnds2rm ; CHECK: movaps %xmm0, [[XMM_TMP2:%xmm[1-9][0-9]?]] ; CHECK: movaps %xmm1, %xmm0 - ; CHECK: sha256rnds2 (%rdi), [[XMM_TMP2]] + ; CHECK: sha256rnds2 %xmm0, (%rdi), [[XMM_TMP2]] } declare <4 x i32> @llvm.x86.sha256msg1(<4 x i32>, <4 x i32>) nounwind readnone @@ -136,4 +136,4 @@ entry: ret <4 x i32> %1 ; CHECK: test_sha256msg2rm ; CHECK: sha256msg2 (%rdi), %xmm0 -} \ No newline at end of file +} diff --git a/test/MC/Disassembler/X86/x86-64.txt b/test/MC/Disassembler/X86/x86-64.txt index 13e36df002a..de62b0ff1d7 100644 --- a/test/MC/Disassembler/X86/x86-64.txt +++ b/test/MC/Disassembler/X86/x86-64.txt @@ -185,10 +185,10 @@ # CHECK: sha1msg2 (%rax), %xmm2 0x0f 0x38 0xca 0x10 -# CHECK: sha256rnds2 (%rax), %xmm2 +# CHECK: sha256rnds2 %xmm0, (%rax), %xmm2 0x0f 0x38 0xcb 0x10 -# CHECK: sha256rnds2 %xmm1, %xmm2 +# CHECK: sha256rnds2 %xmm0, %xmm1, %xmm2 0x0f 0x38 0xcb 0xd1 # CHECK: sha256msg1 %xmm1, %xmm2 diff --git a/test/MC/X86/x86_64-encoding.s b/test/MC/X86/x86_64-encoding.s index 62af1bdb235..c502ed46643 100644 --- a/test/MC/X86/x86_64-encoding.s +++ b/test/MC/X86/x86_64-encoding.s @@ -148,19 +148,19 @@ sha1msg2 %xmm1, %xmm2 // CHECK: encoding: [0x0f,0x38,0xca,0x10] sha1msg2 (%rax), %xmm2 -// CHECK: sha256rnds2 (%rax), %xmm2 +// CHECK: sha256rnds2 %xmm0, (%rax), %xmm2 // CHECK: encoding: [0x0f,0x38,0xcb,0x10] sha256rnds2 (%rax), %xmm2 -// CHECK: sha256rnds2 %xmm1, %xmm2 +// CHECK: sha256rnds2 %xmm0, %xmm1, %xmm2 // CHECK: encoding: [0x0f,0x38,0xcb,0xd1] sha256rnds2 %xmm1, %xmm2 -// CHECK: sha256rnds2 (%rax), %xmm2 +// CHECK: sha256rnds2 %xmm0, (%rax), %xmm2 // CHECK: encoding: [0x0f,0x38,0xcb,0x10] sha256rnds2 %xmm0, (%rax), %xmm2 -// CHECK: sha256rnds2 %xmm1, %xmm2 +// CHECK: sha256rnds2 %xmm0, %xmm1, %xmm2 // CHECK: encoding: [0x0f,0x38,0xcb,0xd1] sha256rnds2 %xmm0, %xmm1, %xmm2 -- 2.11.0