diff options
| -rw-r--r-- | llvm/lib/Target/X86/X86CallingConv.td | 14 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 6 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/avx512-intel-ocl.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/h-registers-0.ll | 3 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/test-shrink.ll | 4 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/vec_cast.ll | 8 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/win32-bool.ll | 33 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/win64-bool.ll | 23 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/xor.ll | 5 | 
9 files changed, 7 insertions, 91 deletions
diff --git a/llvm/lib/Target/X86/X86CallingConv.td b/llvm/lib/Target/X86/X86CallingConv.td index d2ade2296b9..8d3e33d5703 100644 --- a/llvm/lib/Target/X86/X86CallingConv.td +++ b/llvm/lib/Target/X86/X86CallingConv.td @@ -593,8 +593,8 @@ def CC_X86_Win64_C : CallingConv<[    // FIXME: Handle byval stuff.    // FIXME: Handle varargs. -  // Promote i1/v1i1 arguments to i8. -  CCIfType<[i1, v1i1], CCPromoteToType<i8>>, +  // Promote i1/i8/i16/v1i1 arguments to i32. +  CCIfType<[i1, i8, i16, v1i1], CCPromoteToType<i32>>,    // The 'nest' parameter, if any, is passed in R10.    CCIfNest<CCAssignToReg<[R10]>>, @@ -619,10 +619,6 @@ def CC_X86_Win64_C : CallingConv<[    CCIfType<[x86mmx], CCBitConvertToType<i64>>,    // The first 4 integer arguments are passed in integer registers. -  CCIfType<[i8 ], CCAssignToRegWithShadow<[CL  , DL  , R8B , R9B ], -                                          [XMM0, XMM1, XMM2, XMM3]>>, -  CCIfType<[i16], CCAssignToRegWithShadow<[CX  , DX  , R8W , R9W ], -                                          [XMM0, XMM1, XMM2, XMM3]>>,    CCIfType<[i32], CCAssignToRegWithShadow<[ECX , EDX , R8D , R9D ],                                            [XMM0, XMM1, XMM2, XMM3]>>, @@ -851,15 +847,13 @@ def CC_X86_32_MCU : CallingConv<[  ]>;  def CC_X86_32_FastCall : CallingConv<[ -  // Promote i1 to i8. -  CCIfType<[i1], CCPromoteToType<i8>>, +  // Promote i1/i8/i16/v1i1 arguments to i32. +  CCIfType<[i1, i8, i16, v1i1], CCPromoteToType<i32>>,    // The 'nest' parameter, if any, is passed in EAX.    CCIfNest<CCAssignToReg<[EAX]>>,    // The first 2 integer arguments are passed in ECX/EDX -  CCIfInReg<CCIfType<[ i8], CCAssignToReg<[ CL,  DL]>>>, -  CCIfInReg<CCIfType<[i16], CCAssignToReg<[ CX,  DX]>>>,    CCIfInReg<CCIfType<[i32], CCAssignToReg<[ECX, EDX]>>>,    // Otherwise, same as everything else. diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 8e9e090263e..242a008d050 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -3034,11 +3034,7 @@ SDValue X86TargetLowering::LowerFormalArguments(              getv64i1Argument(VA, ArgLocs[++I], Chain, DAG, dl, Subtarget);        } else {          const TargetRegisterClass *RC; -        if (RegVT == MVT::i8) -          RC = &X86::GR8RegClass; -        else if (RegVT == MVT::i16) -          RC = &X86::GR16RegClass; -        else if (RegVT == MVT::i32) +        if (RegVT == MVT::i32)            RC = &X86::GR32RegClass;          else if (Is64Bit && RegVT == MVT::i64)            RC = &X86::GR64RegClass; diff --git a/llvm/test/CodeGen/X86/avx512-intel-ocl.ll b/llvm/test/CodeGen/X86/avx512-intel-ocl.ll index defedd2a7f6..61718fb8c04 100644 --- a/llvm/test/CodeGen/X86/avx512-intel-ocl.ll +++ b/llvm/test/CodeGen/X86/avx512-intel-ocl.ll @@ -420,7 +420,6 @@ define <16 x float> @testf16_inp_mask(<16 x float> %a, i16 %mask)  {  ; WIN64-KNL-NEXT:    subq $40, %rsp  ; WIN64-KNL-NEXT:    .seh_stackalloc 40  ; WIN64-KNL-NEXT:    .seh_endprologue -; WIN64-KNL-NEXT:    # kill: def $dx killed $dx def $edx  ; WIN64-KNL-NEXT:    vmovaps (%rcx), %zmm0  ; WIN64-KNL-NEXT:    kmovw %edx, %k1  ; WIN64-KNL-NEXT:    callq func_float16_mask @@ -436,7 +435,6 @@ define <16 x float> @testf16_inp_mask(<16 x float> %a, i16 %mask)  {  ; WIN64-SKX-NEXT:    subq $40, %rsp  ; WIN64-SKX-NEXT:    .seh_stackalloc 40  ; WIN64-SKX-NEXT:    .seh_endprologue -; WIN64-SKX-NEXT:    # kill: def $dx killed $dx def $edx  ; WIN64-SKX-NEXT:    vmovaps (%rcx), %zmm0  ; WIN64-SKX-NEXT:    kmovd %edx, %k1  ; WIN64-SKX-NEXT:    callq func_float16_mask diff --git a/llvm/test/CodeGen/X86/h-registers-0.ll b/llvm/test/CodeGen/X86/h-registers-0.ll index dfd79f39b6e..5f459c3c459 100644 --- a/llvm/test/CodeGen/X86/h-registers-0.ll +++ b/llvm/test/CodeGen/X86/h-registers-0.ll @@ -98,8 +98,7 @@ define i16 @qux16(i16 inreg %x) nounwind {  ; X86-64: movzbl %ah, %eax  ; WIN64-LABEL:  qux16: -; WIN64:  movzwl  %cx, %eax -; WIN64:  shrl    $8, %eax +; WIN64:  movzbl %ch, %eax  ; X86-32-LABEL: qux16:  ; X86-32: movzbl %ah, %eax diff --git a/llvm/test/CodeGen/X86/test-shrink.ll b/llvm/test/CodeGen/X86/test-shrink.ll index 5a5981462a5..e44233fdd94 100644 --- a/llvm/test/CodeGen/X86/test-shrink.ll +++ b/llvm/test/CodeGen/X86/test-shrink.ll @@ -186,7 +186,6 @@ define void @g16xh(i16 inreg %x) nounwind {  ; CHECK-WIN32-64-LABEL: g16xh:  ; CHECK-WIN32-64:       # %bb.0:  ; CHECK-WIN32-64-NEXT:    subq $40, %rsp -; CHECK-WIN32-64-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN32-64-NEXT:    testl $2048, %ecx # imm = 0x800  ; CHECK-WIN32-64-NEXT:    jne .LBB4_2  ; CHECK-WIN32-64-NEXT:  # %bb.1: # %yes @@ -229,7 +228,6 @@ define void @g16xl(i16 inreg %x) nounwind {  ; CHECK-WIN32-64-LABEL: g16xl:  ; CHECK-WIN32-64:       # %bb.0:  ; CHECK-WIN32-64-NEXT:    subq $40, %rsp -; CHECK-WIN32-64-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN32-64-NEXT:    testb $8, %cl  ; CHECK-WIN32-64-NEXT:    jne .LBB5_2  ; CHECK-WIN32-64-NEXT:  # %bb.1: # %yes @@ -499,7 +497,6 @@ define void @truncand32(i16 inreg %x) nounwind {  ; CHECK-WIN32-64-LABEL: truncand32:  ; CHECK-WIN32-64:       # %bb.0:  ; CHECK-WIN32-64-NEXT:    subq $40, %rsp -; CHECK-WIN32-64-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN32-64-NEXT:    testl $2049, %ecx # imm = 0x801  ; CHECK-WIN32-64-NEXT:    je .LBB11_1  ; CHECK-WIN32-64-NEXT:  # %bb.2: # %no @@ -546,7 +543,6 @@ define void @testw(i16 inreg %x) nounwind minsize {  ; CHECK-WIN32-64-LABEL: testw:  ; CHECK-WIN32-64:       # %bb.0:  ; CHECK-WIN32-64-NEXT:    subq $40, %rsp -; CHECK-WIN32-64-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN32-64-NEXT:    testw $2049, %cx # imm = 0x801  ; CHECK-WIN32-64-NEXT:    jne .LBB12_2  ; CHECK-WIN32-64-NEXT:  # %bb.1: # %yes diff --git a/llvm/test/CodeGen/X86/vec_cast.ll b/llvm/test/CodeGen/X86/vec_cast.ll index f6b1ac14490..e6e59829e00 100644 --- a/llvm/test/CodeGen/X86/vec_cast.ll +++ b/llvm/test/CodeGen/X86/vec_cast.ll @@ -37,9 +37,6 @@ define <3 x i32> @b(<3 x i16> %a) nounwind {  ;  ; CHECK-WIN-LABEL: b:  ; CHECK-WIN:       # %bb.0: -; CHECK-WIN-NEXT:    # kill: def $r8w killed $r8w def $r8d -; CHECK-WIN-NEXT:    # kill: def $dx killed $dx def $edx -; CHECK-WIN-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN-NEXT:    movd %ecx, %xmm0  ; CHECK-WIN-NEXT:    pinsrw $1, %edx, %xmm0  ; CHECK-WIN-NEXT:    pinsrw $2, %r8d, %xmm0 @@ -61,7 +58,6 @@ define <1 x i32> @c(<1 x i16> %a) nounwind {  ;  ; CHECK-WIN-LABEL: c:  ; CHECK-WIN:       # %bb.0: -; CHECK-WIN-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN-NEXT:    movd %ecx, %xmm0  ; CHECK-WIN-NEXT:    pshuflw {{.*#+}} xmm0 = xmm0[0,0,2,1,4,5,6,7]  ; CHECK-WIN-NEXT:    psrad $16, %xmm0 @@ -104,9 +100,6 @@ define <3 x i32> @e(<3 x i16> %a) nounwind {  ;  ; CHECK-WIN-LABEL: e:  ; CHECK-WIN:       # %bb.0: -; CHECK-WIN-NEXT:    # kill: def $r8w killed $r8w def $r8d -; CHECK-WIN-NEXT:    # kill: def $dx killed $dx def $edx -; CHECK-WIN-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN-NEXT:    movd %ecx, %xmm0  ; CHECK-WIN-NEXT:    pinsrw $1, %edx, %xmm0  ; CHECK-WIN-NEXT:    pinsrw $2, %r8d, %xmm0 @@ -128,7 +121,6 @@ define <1 x i32> @f(<1 x i16> %a) nounwind {  ;  ; CHECK-WIN-LABEL: f:  ; CHECK-WIN:       # %bb.0: -; CHECK-WIN-NEXT:    # kill: def $cx killed $cx def $ecx  ; CHECK-WIN-NEXT:    movd %ecx, %xmm0  ; CHECK-WIN-NEXT:    pxor %xmm1, %xmm1  ; CHECK-WIN-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3] diff --git a/llvm/test/CodeGen/X86/win32-bool.ll b/llvm/test/CodeGen/X86/win32-bool.ll deleted file mode 100644 index 53607ea06c7..00000000000 --- a/llvm/test/CodeGen/X86/win32-bool.ll +++ /dev/null @@ -1,33 +0,0 @@ -; RUN: llc < %s -mtriple=i686-windows-msvc | FileCheck %s -; RUN: llc < %s -mtriple=i686-windows-gnu | FileCheck %s - -define x86_fastcallcc i32 @pass_fast_bool(i1 inreg zeroext %b) { -entry: -  %cond = select i1 %b, i32 66, i32 0 -  ret i32 %cond -} - -; CHECK-LABEL: @pass_fast_bool@4: -; CHECK-DAG: testb %cl, %cl -; CHECK-DAG: movl    $66, -; CHECK:     retl - -define x86_vectorcallcc i32 @pass_vector_bool(i1 inreg zeroext %b) { -entry: -  %cond = select i1 %b, i32 66, i32 0 -  ret i32 %cond -} - -; CHECK-LABEL: pass_vector_bool@@4: -; CHECK-DAG: testb %cl, %cl -; CHECK-DAG: movl    $66, -; CHECK:     retl - -define zeroext i1 @ret_true() { -entry: -  ret i1 true -} - -; CHECK-LABEL: ret_true: -; CHECK:     movb $1, %al -; CHECK:     retl diff --git a/llvm/test/CodeGen/X86/win64-bool.ll b/llvm/test/CodeGen/X86/win64-bool.ll deleted file mode 100644 index cb77c7ed201..00000000000 --- a/llvm/test/CodeGen/X86/win64-bool.ll +++ /dev/null @@ -1,23 +0,0 @@ -; RUN: llc < %s -mtriple=x86_64-windows-msvc | FileCheck %s --check-prefix=CHECK -; RUN: llc < %s -mtriple=x86_64-windows-gnu | FileCheck %s --check-prefix=CHECK - -define i32 @pass_bool(i1 zeroext %b) { -entry: -  %cond = select i1 %b, i32 66, i32 0 -  ret i32 %cond -} - -; CHECK-LABEL: pass_bool: -; CHECK-DAG: testb %cl, %cl -; CHECK-DAG: movl    $66, -; CHECK:     cmovel {{.*}}, %eax -; CHECK:     retq - -define zeroext i1 @ret_true() { -entry: -  ret i1 true -} - -; CHECK-LABEL: ret_true: -; CHECK:     movb $1, %al -; CHECK:     retq diff --git a/llvm/test/CodeGen/X86/xor.ll b/llvm/test/CodeGen/X86/xor.ll index f73fdb21b96..6f0f0df465c 100644 --- a/llvm/test/CodeGen/X86/xor.ll +++ b/llvm/test/CodeGen/X86/xor.ll @@ -167,8 +167,6 @@ define i16 @test5(i16 %a, i16 %b) nounwind  {  ;  ; X64-WIN-LABEL: test5:  ; X64-WIN:       # %bb.0: # %entry -; X64-WIN-NEXT:    # kill: def $dx killed $dx def $edx -; X64-WIN-NEXT:    # kill: def $cx killed $cx def $ecx  ; X64-WIN-NEXT:    .p2align 4, 0x90  ; X64-WIN-NEXT:  .LBB4_1: # %bb  ; X64-WIN-NEXT:    # =>This Inner Loop Header: Depth=1 @@ -429,8 +427,7 @@ define i32 @PR17487(i1 %tobool) {  ;  ; X64-WIN-LABEL: PR17487:  ; X64-WIN:       # %bb.0: -; X64-WIN-NEXT:    movzbl %cl, %eax -; X64-WIN-NEXT:    movd %eax, %xmm0 +; X64-WIN-NEXT:    movd %ecx, %xmm0  ; X64-WIN-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]  ; X64-WIN-NEXT:    pandn __xmm@{{.*}}(%rip), %xmm0  ; X64-WIN-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]  | 

