| Index: tests_lit/assembler/x86/opcode_register_encodings.ll
|
| diff --git a/tests_lit/assembler/x86/opcode_register_encodings.ll b/tests_lit/assembler/x86/opcode_register_encodings.ll
|
| index 122347ca135a3ecbb36fefa4712e33b3cff33c91..642e03408a0217804d847801db75c671e527561b 100644
|
| --- a/tests_lit/assembler/x86/opcode_register_encodings.ll
|
| +++ b/tests_lit/assembler/x86/opcode_register_encodings.ll
|
| @@ -2,16 +2,15 @@
|
| ; those for pmull vary more wildly depending on operand size (rather than
|
| ; follow a usual pattern).
|
|
|
| -; RUN: %p2i -i %s --args -O2 -mattr=sse4.1 -sandbox --verbose none \
|
| -; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \
|
| -; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s
|
| +; RUN: %p2i --assemble --disassemble -i %s --args -O2 -mattr=sse4.1 -sandbox \
|
| +; RUN: --verbose none | FileCheck %s
|
|
|
| define <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
|
| entry:
|
| %res = mul <8 x i16> %arg0, %arg1
|
| ret <8 x i16> %res
|
| ; CHECK-LABEL: test_mul_v8i16
|
| -; CHECK: 66 0f d5 c1 pmullw xmm0, xmm1
|
| +; CHECK: 66 0f d5 c1 pmullw xmm0,xmm1
|
| }
|
|
|
| ; Test register and address mode encoding.
|
| @@ -34,14 +33,14 @@ entry:
|
| %res = select <8 x i1> %cond, <8 x i16> %res_acc1_3, <8 x i16> %res_acc2_4
|
| ret <8 x i16> %res
|
| ; CHECK-LABEL: test_mul_v8i16_more_regs
|
| -; CHECK-DAG: 66 0f d5 c2 pmullw xmm0, xmm2
|
| -; CHECK-DAG: 66 0f d5 c3 pmullw xmm0, xmm3
|
| -; CHECK-DAG: 66 0f d5 c4 pmullw xmm0, xmm4
|
| -; CHECK-DAG: 66 0f d5 c5 pmullw xmm0, xmm5
|
| -; CHECK-DAG: 66 0f d5 c6 pmullw xmm0, xmm6
|
| -; CHECK-DAG: 66 0f d5 c7 pmullw xmm0, xmm7
|
| -; CHECK-DAG: 66 0f d5 44 24 70 pmullw xmm0, xmmword ptr [esp + 112]
|
| -; CHECK-DAG: 66 0f d5 8c 24 80 00 00 00 pmullw xmm1, xmmword ptr [esp + 128]
|
| +; CHECK-DAG: 66 0f d5 c2 pmullw xmm0,xmm2
|
| +; CHECK-DAG: 66 0f d5 c3 pmullw xmm0,xmm3
|
| +; CHECK-DAG: 66 0f d5 c4 pmullw xmm0,xmm4
|
| +; CHECK-DAG: 66 0f d5 c5 pmullw xmm0,xmm5
|
| +; CHECK-DAG: 66 0f d5 c6 pmullw xmm0,xmm6
|
| +; CHECK-DAG: 66 0f d5 c7 pmullw xmm0,xmm7
|
| +; CHECK-DAG: 66 0f d5 44 24 70 pmullw xmm0,XMMWORD PTR [esp
|
| +; CHECK-DAG: 66 0f d5 8c 24 80 00 00 00 pmullw xmm1,XMMWORD PTR [esp
|
| }
|
|
|
| define <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
|
| @@ -49,7 +48,7 @@ entry:
|
| %res = mul <4 x i32> %arg0, %arg1
|
| ret <4 x i32> %res
|
| ; CHECK-LABEL: test_mul_v4i32
|
| -; CHECK: 66 0f 38 40 c1 pmulld xmm0, xmm1
|
| +; CHECK: 66 0f 38 40 c1 pmulld xmm0,xmm1
|
| }
|
|
|
| define <4 x i32> @test_mul_v4i32_more_regs(<4 x i1> %cond, <4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, <4 x i32> %arg3, <4 x i32> %arg4, <4 x i32> %arg5, <4 x i32> %arg6, <4 x i32> %arg7, <4 x i32> %arg8) {
|
| @@ -71,14 +70,14 @@ entry:
|
| %res = select <4 x i1> %cond, <4 x i32> %res_acc1_3, <4 x i32> %res_acc2_4
|
| ret <4 x i32> %res
|
| ; CHECK-LABEL: test_mul_v4i32_more_regs
|
| -; CHECK-DAG: 66 0f 38 40 c2 pmulld xmm0, xmm2
|
| -; CHECK-DAG: 66 0f 38 40 c3 pmulld xmm0, xmm3
|
| -; CHECK-DAG: 66 0f 38 40 c4 pmulld xmm0, xmm4
|
| -; CHECK-DAG: 66 0f 38 40 c5 pmulld xmm0, xmm5
|
| -; CHECK-DAG: 66 0f 38 40 c6 pmulld xmm0, xmm6
|
| -; CHECK-DAG: 66 0f 38 40 c7 pmulld xmm0, xmm7
|
| -; CHECK-DAG: 66 0f 38 40 44 24 70 pmulld xmm0, xmmword ptr [esp + 112]
|
| -; CHECK-DAG: 66 0f 38 40 8c 24 80 00 00 00 pmulld xmm1, xmmword ptr [esp + 128]
|
| +; CHECK-DAG: 66 0f 38 40 c2 pmulld xmm0,xmm2
|
| +; CHECK-DAG: 66 0f 38 40 c3 pmulld xmm0,xmm3
|
| +; CHECK-DAG: 66 0f 38 40 c4 pmulld xmm0,xmm4
|
| +; CHECK-DAG: 66 0f 38 40 c5 pmulld xmm0,xmm5
|
| +; CHECK-DAG: 66 0f 38 40 c6 pmulld xmm0,xmm6
|
| +; CHECK-DAG: 66 0f 38 40 c7 pmulld xmm0,xmm7
|
| +; CHECK-DAG: 66 0f 38 40 44 24 70 pmulld xmm0,XMMWORD PTR [esp
|
| +; CHECK-DAG: 66 0f 38 40 8c 24 80 00 00 00 pmulld xmm1,XMMWORD PTR [esp
|
| }
|
|
|
| ; Test movq, which is used by atomic stores.
|
| @@ -95,9 +94,9 @@ entry:
|
| ret void
|
| }
|
| ; CHECK-LABEL: test_atomic_store_64
|
| -; CHECK-DAG: f3 0f 7e 04 24 movq xmm0, qword ptr [esp]
|
| -; CHECK-DAG: f3 0f 7e 44 24 08 movq xmm0, qword ptr [esp + 8]
|
| -; CHECK-DAG: 66 0f d6 0{{.*}} movq qword ptr [e{{.*}}], xmm0
|
| +; CHECK-DAG: f3 0f 7e 04 24 movq xmm0,QWORD PTR [esp]
|
| +; CHECK-DAG: f3 0f 7e 44 24 08 movq xmm0,QWORD PTR [esp
|
| +; CHECK-DAG: 66 0f d6 0{{.*}} movq QWORD PTR [e{{.*}}],xmm0
|
|
|
| ; Test "movups" via vector stores and loads.
|
| define void @store_v16xI8(i32 %addr, i32 %addr2, i32 %addr3, <16 x i8> %v) {
|
| @@ -110,7 +109,7 @@ define void @store_v16xI8(i32 %addr, i32 %addr2, i32 %addr3, <16 x i8> %v) {
|
| ret void
|
| }
|
| ; CHECK-LABEL: store_v16xI8
|
| -; CHECK: 0f 11 0{{.*}} movups xmmword ptr [e{{.*}}], xmm0
|
| +; CHECK: 0f 11 0{{.*}} movups XMMWORD PTR [e{{.*}}],xmm0
|
|
|
| define <16 x i8> @load_v16xI8(i32 %addr, i32 %addr2, i32 %addr3) {
|
| %addr_v16xI8 = inttoptr i32 %addr to <16 x i8>*
|
| @@ -124,7 +123,7 @@ define <16 x i8> @load_v16xI8(i32 %addr, i32 %addr2, i32 %addr3) {
|
| ret <16 x i8> %res123
|
| }
|
| ; CHECK-LABEL: load_v16xI8
|
| -; CHECK: 0f 10 0{{.*}} movups xmm0, xmmword ptr [e{{.*}}]
|
| +; CHECK: 0f 10 0{{.*}} movups xmm0,XMMWORD PTR [e{{.*}}]
|
|
|
| ; Test segment override prefix. This happens w/ nacl.read.tp.
|
| declare i8* @llvm.nacl.read.tp()
|
| @@ -154,11 +153,11 @@ entry:
|
| ret i32 %v
|
| }
|
| ; CHECK-LABEL: test_nacl_read_tp_more_addressing
|
| -; CHECK: 65 8b 05 00 00 00 00 mov eax, dword ptr gs:[0]
|
| -; CHECK: 8b 04 00 mov eax, dword ptr [eax + eax]
|
| -; CHECK: 65 8b 0d 00 00 00 00 mov ecx, dword ptr gs:[0]
|
| -; CHECK: 89 51 80 mov dword ptr [ecx - 128], edx
|
| -; CHECK: 89 91 00 01 00 00 mov dword ptr [ecx + 256], edx
|
| +; CHECK: 65 8b 05 00 00 00 00 mov eax,DWORD PTR gs:0x0
|
| +; CHECK: 8b 04 00 mov eax,DWORD PTR [eax+eax*1]
|
| +; CHECK: 65 8b 0d 00 00 00 00 mov ecx,DWORD PTR gs:0x0
|
| +; CHECK: 89 51 80 mov DWORD PTR [ecx-0x80],edx
|
| +; CHECK: 89 91 00 01 00 00 mov DWORD PTR [ecx+0x100],edx
|
|
|
| ; The 16-bit pinsrw/pextrw (SSE2) are quite different from
|
| ; the pinsr{b,d}/pextr{b,d} (SSE4.1).
|
| @@ -172,10 +171,10 @@ entry:
|
| %res3 = insertelement <4 x i32> %res2, i32 %elt1, i32 3
|
| ret <4 x i32> %res3
|
| }
|
| -; CHECK-LABEL: test_pinsrd:
|
| -; CHECK-DAG: 66 0f 3a 22 c{{.*}} 01 pinsrd xmm0, e{{.*}}, 1
|
| -; CHECK-DAG: 66 0f 3a 22 c{{.*}} 02 pinsrd xmm0, e{{.*}}, 2
|
| -; CHECK-DAG: 66 0f 3a 22 c{{.*}} 03 pinsrd xmm0, e{{.*}}, 3
|
| +; CHECK-LABEL: test_pinsrd
|
| +; CHECK-DAG: 66 0f 3a 22 c{{.*}} 01 pinsrd xmm0,e{{.*}}
|
| +; CHECK-DAG: 66 0f 3a 22 c{{.*}} 02 pinsrd xmm0,e{{.*}}
|
| +; CHECK-DAG: 66 0f 3a 22 c{{.*}} 03 pinsrd xmm0,e{{.*}}
|
|
|
| define <16 x i8> @test_pinsrb(<16 x i8> %vec, i32 %elt1_w, i32 %elt2_w, i32 %elt3_w, i32 %elt4_w) {
|
| entry:
|
| @@ -190,10 +189,10 @@ entry:
|
| %res3 = insertelement <16 x i8> %res2, i8 %elt1, i32 15
|
| ret <16 x i8> %res3
|
| }
|
| -; CHECK-LABEL: test_pinsrb:
|
| -; CHECK-DAG: 66 0f 3a 20 c{{.*}} 01 pinsrb xmm0, e{{.*}}, 1
|
| -; CHECK-DAG: 66 0f 3a 20 c{{.*}} 07 pinsrb xmm0, e{{.*}}, 7
|
| -; CHECK-DAG: 66 0f 3a 20 {{.*}} 0f pinsrb xmm0, byte ptr {{.*}}, 15
|
| +; CHECK-LABEL: test_pinsrb
|
| +; CHECK-DAG: 66 0f 3a 20 c{{.*}} 01 pinsrb xmm0,e{{.*}}
|
| +; CHECK-DAG: 66 0f 3a 20 c{{.*}} 07 pinsrb xmm0,e{{.*}}
|
| +; CHECK-DAG: 66 0f 3a 20 {{.*}} 0f pinsrb xmm0,BYTE PTR {{.*}}
|
|
|
| define <8 x i16> @test_pinsrw(<8 x i16> %vec, i32 %elt1_w, i32 %elt2_w, i32 %elt3_w, i32 %elt4_w) {
|
| entry:
|
| @@ -208,10 +207,10 @@ entry:
|
| %res3 = insertelement <8 x i16> %res2, i16 %elt1, i32 7
|
| ret <8 x i16> %res3
|
| }
|
| -; CHECK-LABEL: test_pinsrw:
|
| -; CHECK-DAG: 66 0f c4 c{{.*}} 01 pinsrw xmm0, e{{.*}}, 1
|
| -; CHECK-DAG: 66 0f c4 c{{.*}} 04 pinsrw xmm0, e{{.*}}, 4
|
| -; CHECK-DAG: 66 0f c4 c{{.*}} 07 pinsrw xmm0, e{{.*}}, 7
|
| +; CHECK-LABEL: test_pinsrw
|
| +; CHECK-DAG: 66 0f c4 c{{.*}} 01 pinsrw xmm0,e{{.*}}
|
| +; CHECK-DAG: 66 0f c4 c{{.*}} 04 pinsrw xmm0,e{{.*}}
|
| +; CHECK-DAG: 66 0f c4 c{{.*}} 07 pinsrw xmm0,e{{.*}}
|
|
|
| define i32 @test_pextrd(i32 %c, <4 x i32> %vec1, <4 x i32> %vec2, <4 x i32> %vec3, <4 x i32> %vec4) {
|
| entry:
|
| @@ -232,10 +231,10 @@ three:
|
| ret i32 %res3
|
| }
|
| ; CHECK-LABEL: test_pextrd
|
| -; CHECK-DAG: 66 0f 3a 16 c0 00 pextrd eax, xmm0, 0
|
| -; CHECK-DAG: 66 0f 3a 16 c8 01 pextrd eax, xmm1, 1
|
| -; CHECK-DAG: 66 0f 3a 16 d0 02 pextrd eax, xmm2, 2
|
| -; CHECK-DAG: 66 0f 3a 16 d8 03 pextrd eax, xmm3, 3
|
| +; CHECK-DAG: 66 0f 3a 16 c0 00 pextrd eax,xmm0
|
| +; CHECK-DAG: 66 0f 3a 16 c8 01 pextrd eax,xmm1
|
| +; CHECK-DAG: 66 0f 3a 16 d0 02 pextrd eax,xmm2
|
| +; CHECK-DAG: 66 0f 3a 16 d8 03 pextrd eax,xmm3
|
|
|
| define i32 @test_pextrb(i32 %c, <16 x i8> %vec1, <16 x i8> %vec2, <16 x i8> %vec3, <16 x i8> %vec4) {
|
| entry:
|
| @@ -260,10 +259,10 @@ three:
|
| ret i32 %res3_ext
|
| }
|
| ; CHECK-LABEL: test_pextrb
|
| -; CHECK-DAG: 66 0f 3a 14 c0 00 pextrb eax, xmm0, 0
|
| -; CHECK-DAG: 66 0f 3a 14 c8 06 pextrb eax, xmm1, 6
|
| -; CHECK-DAG: 66 0f 3a 14 d0 0c pextrb eax, xmm2, 12
|
| -; CHECK-DAG: 66 0f 3a 14 d8 0f pextrb eax, xmm3, 15
|
| +; CHECK-DAG: 66 0f 3a 14 c0 00 pextrb eax,xmm0
|
| +; CHECK-DAG: 66 0f 3a 14 c8 06 pextrb eax,xmm1
|
| +; CHECK-DAG: 66 0f 3a 14 d0 0c pextrb eax,xmm2
|
| +; CHECK-DAG: 66 0f 3a 14 d8 0f pextrb eax,xmm3
|
|
|
| define i32 @test_pextrw(i32 %c, <8 x i16> %vec1, <8 x i16> %vec2, <8 x i16> %vec3, <8 x i16> %vec4) {
|
| entry:
|
| @@ -288,7 +287,7 @@ three:
|
| ret i32 %res3_ext
|
| }
|
| ; CHECK-LABEL: test_pextrw
|
| -; CHECK-DAG: 66 0f c5 c0 00 pextrw eax, xmm0, 0
|
| -; CHECK-DAG: 66 0f c5 c1 02 pextrw eax, xmm1, 2
|
| -; CHECK-DAG: 66 0f c5 c2 05 pextrw eax, xmm2, 5
|
| -; CHECK-DAG: 66 0f c5 c3 07 pextrw eax, xmm3, 7
|
| +; CHECK-DAG: 66 0f c5 c0 00 pextrw eax,xmm0
|
| +; CHECK-DAG: 66 0f c5 c1 02 pextrw eax,xmm1
|
| +; CHECK-DAG: 66 0f c5 c2 05 pextrw eax,xmm2
|
| +; CHECK-DAG: 66 0f c5 c3 07 pextrw eax,xmm3
|
|
|