diff options
Diffstat (limited to 'test/CodeGen/X86/gpr-to-mask.ll')
-rw-r--r-- | test/CodeGen/X86/gpr-to-mask.ll | 72 |
1 files changed, 34 insertions, 38 deletions
diff --git a/test/CodeGen/X86/gpr-to-mask.ll b/test/CodeGen/X86/gpr-to-mask.ll index ead07adb3877..ff237799783f 100644 --- a/test/CodeGen/X86/gpr-to-mask.ll +++ b/test/CodeGen/X86/gpr-to-mask.ll @@ -60,13 +60,11 @@ define void @test_fcmp_storei1(i1 %cond, float* %fptr, i1* %iptr, float %f1, flo ; X86-64-NEXT: je .LBB1_2 ; X86-64-NEXT: # %bb.1: # %if ; X86-64-NEXT: vcmpeqss %xmm1, %xmm0, %k0 -; X86-64-NEXT: jmp .LBB1_3 +; X86-64-NEXT: kmovb %k0, (%rdx) +; X86-64-NEXT: retq ; X86-64-NEXT: .LBB1_2: # %else ; X86-64-NEXT: vcmpeqss %xmm3, %xmm2, %k0 -; X86-64-NEXT: .LBB1_3: # %exit -; X86-64-NEXT: kmovd %k0, %eax -; X86-64-NEXT: andb $1, %al -; X86-64-NEXT: movb %al, (%rdx) +; X86-64-NEXT: kmovb %k0, (%rdx) ; X86-64-NEXT: retq ; ; X86-32-LABEL: test_fcmp_storei1: @@ -77,14 +75,12 @@ define void @test_fcmp_storei1(i1 %cond, float* %fptr, i1* %iptr, float %f1, flo ; X86-32-NEXT: # %bb.1: # %if ; X86-32-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; X86-32-NEXT: vcmpeqss {{[0-9]+}}(%esp), %xmm0, %k0 -; X86-32-NEXT: jmp .LBB1_3 +; X86-32-NEXT: kmovb %k0, (%eax) +; X86-32-NEXT: retl ; X86-32-NEXT: .LBB1_2: # %else ; X86-32-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero ; X86-32-NEXT: vcmpeqss {{[0-9]+}}(%esp), %xmm0, %k0 -; X86-32-NEXT: .LBB1_3: # %exit -; X86-32-NEXT: kmovd %k0, %ecx -; X86-32-NEXT: andb $1, %cl -; X86-32-NEXT: movb %cl, (%eax) +; X86-32-NEXT: kmovb %k0, (%eax) ; X86-32-NEXT: retl entry: br i1 %cond, label %if, label %else @@ -109,13 +105,13 @@ define void @test_load_add(i1 %cond, float* %fptr, i1* %iptr1, i1* %iptr2, float ; X86-64-NEXT: testb $1, %dil ; X86-64-NEXT: je .LBB2_2 ; X86-64-NEXT: # %bb.1: # %if -; X86-64-NEXT: kmovb (%rdx), %k0 -; X86-64-NEXT: kmovb (%rcx), %k1 -; X86-64-NEXT: kaddb %k1, %k0, %k1 +; X86-64-NEXT: movb (%rdx), %al +; X86-64-NEXT: addb (%rcx), %al ; X86-64-NEXT: jmp .LBB2_3 ; X86-64-NEXT: .LBB2_2: # %else -; X86-64-NEXT: kmovb (%rcx), %k1 +; X86-64-NEXT: movb (%rcx), %al ; X86-64-NEXT: .LBB2_3: # %exit +; X86-64-NEXT: kmovd %eax, %k1 ; X86-64-NEXT: vmovss %xmm0, %xmm0, %xmm1 {%k1} ; X86-64-NEXT: vmovss %xmm1, (%rsi) ; X86-64-NEXT: retq @@ -130,13 +126,13 @@ define void @test_load_add(i1 %cond, float* %fptr, i1* %iptr1, i1* %iptr2, float ; X86-32-NEXT: je .LBB2_2 ; X86-32-NEXT: # %bb.1: # %if ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %edx -; X86-32-NEXT: kmovb (%edx), %k0 -; X86-32-NEXT: kmovb (%ecx), %k1 -; X86-32-NEXT: kaddb %k1, %k0, %k1 +; X86-32-NEXT: movb (%edx), %dl +; X86-32-NEXT: addb (%ecx), %dl ; X86-32-NEXT: jmp .LBB2_3 ; X86-32-NEXT: .LBB2_2: # %else -; X86-32-NEXT: kmovb (%ecx), %k1 +; X86-32-NEXT: movb (%ecx), %dl ; X86-32-NEXT: .LBB2_3: # %exit +; X86-32-NEXT: kmovd %edx, %k1 ; X86-32-NEXT: vmovss %xmm1, %xmm0, %xmm0 {%k1} ; X86-32-NEXT: vmovss %xmm0, (%eax) ; X86-32-NEXT: retl @@ -260,8 +256,8 @@ exit: define void @test_shl1(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x float> %fvec2, <8 x float>* %fptrvec) { ; X86-64-LABEL: test_shl1: ; X86-64: # %bb.0: # %entry -; X86-64-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-64-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-64-NEXT: testb $1, %dil ; X86-64-NEXT: je .LBB5_2 ; X86-64-NEXT: # %bb.1: # %if @@ -278,8 +274,8 @@ define void @test_shl1(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x ; ; X86-32-LABEL: test_shl1: ; X86-32: # %bb.0: # %entry -; X86-32-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-32-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-32-NEXT: testb $1, {{[0-9]+}}(%esp) ; X86-32-NEXT: je .LBB5_2 @@ -319,8 +315,8 @@ exit: define void @test_shr1(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x float> %fvec2, <8 x float>* %fptrvec) { ; X86-64-LABEL: test_shr1: ; X86-64: # %bb.0: # %entry -; X86-64-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-64-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-64-NEXT: testb $1, %dil ; X86-64-NEXT: je .LBB6_2 ; X86-64-NEXT: # %bb.1: # %if @@ -338,8 +334,8 @@ define void @test_shr1(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x ; ; X86-32-LABEL: test_shr1: ; X86-32: # %bb.0: # %entry -; X86-32-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-32-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-32-NEXT: testb $1, {{[0-9]+}}(%esp) ; X86-32-NEXT: je .LBB6_2 @@ -380,8 +376,8 @@ exit: define void @test_shr2(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x float> %fvec2, <8 x float>* %fptrvec) { ; X86-64-LABEL: test_shr2: ; X86-64: # %bb.0: # %entry -; X86-64-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-64-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-64-NEXT: testb $1, %dil ; X86-64-NEXT: je .LBB7_2 ; X86-64-NEXT: # %bb.1: # %if @@ -398,8 +394,8 @@ define void @test_shr2(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x ; ; X86-32-LABEL: test_shr2: ; X86-32: # %bb.0: # %entry -; X86-32-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-32-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-32-NEXT: testb $1, {{[0-9]+}}(%esp) ; X86-32-NEXT: je .LBB7_2 @@ -439,8 +435,8 @@ exit: define void @test_shl(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x float> %fvec2, <8 x float>* %fptrvec) { ; X86-64-LABEL: test_shl: ; X86-64: # %bb.0: # %entry -; X86-64-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-64-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-64-NEXT: testb $1, %dil ; X86-64-NEXT: je .LBB8_2 ; X86-64-NEXT: # %bb.1: # %if @@ -457,8 +453,8 @@ define void @test_shl(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x f ; ; X86-32-LABEL: test_shl: ; X86-32: # %bb.0: # %entry -; X86-32-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-32-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-32-NEXT: testb $1, {{[0-9]+}}(%esp) ; X86-32-NEXT: je .LBB8_2 @@ -498,8 +494,8 @@ exit: define void @test_add(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x float> %fvec2, <8 x float>* %fptrvec) { ; X86-64-LABEL: test_add: ; X86-64: # %bb.0: # %entry -; X86-64-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-64-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-64-NEXT: kmovb (%rsi), %k0 ; X86-64-NEXT: kmovb (%rdx), %k1 ; X86-64-NEXT: testb $1, %dil @@ -517,8 +513,8 @@ define void @test_add(i1 %cond, i8* %ptr1, i8* %ptr2, <8 x float> %fvec1, <8 x f ; ; X86-32-LABEL: test_add: ; X86-32: # %bb.0: # %entry -; X86-32-NEXT: # kill: def %ymm1 killed %ymm1 def %zmm1 -; X86-32-NEXT: # kill: def %ymm0 killed %ymm0 def %zmm0 +; X86-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 +; X86-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %eax ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %ecx ; X86-32-NEXT: movl {{[0-9]+}}(%esp), %edx |