440 changes: 220 additions & 220 deletions llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-idiv.ll

Large diffs are not rendered by default.

458 changes: 228 additions & 230 deletions llvm/test/CodeGen/AMDGPU/branch-folding-implicit-def-subreg.ll

Large diffs are not rendered by default.

25 changes: 12 additions & 13 deletions llvm/test/CodeGen/AMDGPU/collapse-endcf.ll
Original file line number Diff line number Diff line change
Expand Up @@ -449,14 +449,14 @@ define amdgpu_kernel void @nested_if_if_else(ptr addrspace(1) nocapture %arg) {
; GCN-O0-NEXT: s_mov_b32 s5, s2
; GCN-O0-NEXT: ; kill: def $sgpr0_sgpr1 killed $sgpr0_sgpr1 def $sgpr0_sgpr1_sgpr2_sgpr3
; GCN-O0-NEXT: s_mov_b64 s[2:3], s[4:5]
; GCN-O0-NEXT: s_mov_b32 s4, 2
; GCN-O0-NEXT: v_lshlrev_b32_e64 v3, s4, v1
; GCN-O0-NEXT: s_mov_b32 s4, 0
; GCN-O0-NEXT: ; implicit-def: $sgpr4
; GCN-O0-NEXT: v_mov_b32_e32 v4, 0
; GCN-O0-NEXT: s_waitcnt expcnt(0)
; GCN-O0-NEXT: v_mov_b32_e32 v2, v1
; GCN-O0-NEXT: v_mov_b32_e32 v3, v4
; GCN-O0-NEXT: s_mov_b32 s4, 2
; GCN-O0-NEXT: v_lshl_b64 v[3:4], v[2:3], s4
; GCN-O0-NEXT: v_mov_b32_e32 v2, 0
; GCN-O0-NEXT: ; kill: def $vgpr3 killed $vgpr3 def $vgpr3_vgpr4 killed $exec
; GCN-O0-NEXT: v_mov_b32_e32 v4, v2
; GCN-O0-NEXT: v_mov_b32_e32 v2, 0
; GCN-O0-NEXT: buffer_store_dword v2, v[3:4], s[0:3], 0 addr64
; GCN-O0-NEXT: s_mov_b32 s0, 1
Expand Down Expand Up @@ -684,15 +684,14 @@ define amdgpu_kernel void @nested_if_else_if(ptr addrspace(1) nocapture %arg) {
; GCN-O0-NEXT: s_load_dwordx2 s[4:5], s[4:5], 0x9
; GCN-O0-NEXT: v_mov_b32_e32 v2, v1
; GCN-O0-NEXT: buffer_store_dword v2, off, s[12:15], 0 offset:16 ; 4-byte Folded Spill
; GCN-O0-NEXT: s_mov_b32 s0, 0
; GCN-O0-NEXT: ; implicit-def: $sgpr0
; GCN-O0-NEXT: v_mov_b32_e32 v4, 0
; GCN-O0-NEXT: s_waitcnt expcnt(0)
; GCN-O0-NEXT: v_mov_b32_e32 v2, v1
; GCN-O0-NEXT: v_mov_b32_e32 v3, v4
; GCN-O0-NEXT: s_mov_b32 s0, 2
; GCN-O0-NEXT: s_mov_b32 s1, s0
; GCN-O0-NEXT: v_lshl_b64 v[3:4], v[2:3], s1
; GCN-O0-NEXT: v_lshlrev_b32_e64 v3, s0, v1
; GCN-O0-NEXT: s_mov_b32 s1, 0
; GCN-O0-NEXT: ; implicit-def: $sgpr1
; GCN-O0-NEXT: s_waitcnt expcnt(0)
; GCN-O0-NEXT: v_mov_b32_e32 v2, 0
; GCN-O0-NEXT: ; kill: def $vgpr3 killed $vgpr3 def $vgpr3_vgpr4 killed $exec
; GCN-O0-NEXT: v_mov_b32_e32 v4, v2
; GCN-O0-NEXT: s_waitcnt lgkmcnt(0)
; GCN-O0-NEXT: s_mov_b32 s2, s4
; GCN-O0-NEXT: v_mov_b32_e32 v2, v3
Expand Down
529 changes: 245 additions & 284 deletions llvm/test/CodeGen/AMDGPU/idiv-licm.ll

Large diffs are not rendered by default.

1,725 changes: 681 additions & 1,044 deletions llvm/test/CodeGen/AMDGPU/promote-constOffset-to-imm.ll

Large diffs are not rendered by default.

796 changes: 393 additions & 403 deletions llvm/test/CodeGen/AMDGPU/spill-scavenge-offset.ll

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion llvm/test/CodeGen/AMDGPU/vgpr-liverange-ir.ll
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ define protected amdgpu_kernel void @nested_waterfalls(ptr addrspace(1) %tex.coe
; SI-NEXT: successors: %bb.2(0x80000000)
; SI-NEXT: {{ $}}
; SI-NEXT: [[S_LOAD_DWORDX2_IMM:%[0-9]+]]:sreg_64_xexec = S_LOAD_DWORDX2_IMM killed [[COPY]](p4), 36, 0 :: (dereferenceable invariant load (s64) from %ir.tex.coerce.kernarg.offset, align 4, addrspace 4)
; SI-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 3, killed [[COPY1]](s32), implicit $exec
; SI-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = nuw nsw V_LSHLREV_B32_e64 3, killed [[COPY1]](s32), implicit $exec
; SI-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR killed [[S_LOAD_DWORDX2_IMM]], killed [[V_LSHLREV_B32_e64_]], 0, 0, implicit $exec :: (load (s64) from %ir.idx, addrspace 1)
; SI-NEXT: [[GLOBAL_LOAD_DWORDX4_:%[0-9]+]]:vreg_128 = GLOBAL_LOAD_DWORDX4 [[GLOBAL_LOAD_DWORDX2_SADDR]], 16, 0, implicit $exec :: (invariant load (s128) from %ir.3 + 16, addrspace 4)
; SI-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[GLOBAL_LOAD_DWORDX4_]].sub3
Expand Down
2,682 changes: 1,333 additions & 1,349 deletions llvm/test/CodeGen/AMDGPU/vni8-across-blocks.ll

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions llvm/test/CodeGen/AMDGPU/xnor.ll
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,7 @@ define amdgpu_kernel void @xnor_v_s_i32_one_use(ptr addrspace(1) %out, i32 %s) {
; GCN-LABEL: {{^}}xnor_i64_s_v_one_use
; GCN-NOT: s_xnor_b64
; GCN: s_not_b64
; GCN: v_xor_b32
; GCN: v_xor_b32
; GCN: v_xor_b32_e32
; GCN-DL: v_xnor_b32
; GCN-DL: v_xnor_b32
define amdgpu_kernel void @xnor_i64_s_v_one_use(
Expand All @@ -132,8 +131,7 @@ entry:
; GCN-LABEL: {{^}}xnor_i64_v_s_one_use
; GCN-NOT: s_xnor_b64
; GCN: s_not_b64
; GCN: v_xor_b32
; GCN: v_xor_b32
; GCN: v_xor_b32_e32
; GCN-DL: v_xnor_b32
; GCN-DL: v_xnor_b32
define amdgpu_kernel void @xnor_i64_v_s_one_use(
Expand Down
3 changes: 1 addition & 2 deletions llvm/test/CodeGen/X86/2009-05-30-ISelBug.ll
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ define void @BZ2_bzDecompress_bb5_2E_outer_bb35_2E_i_bb54_2E_i(ptr, i32 %c_nbloc
; CHECK-NEXT: movl %edx, %edx
; CHECK-NEXT: movl (%rdi,%rdx,4), %edx
; CHECK-NEXT: movzbl %dl, %r10d
; CHECK-NEXT: # kill: def $edx killed $edx def $rdx
; CHECK-NEXT: shrl $8, %edx
; CHECK-NEXT: addl $4, %r10d
; CHECK-NEXT: shrl $8, %edx
; CHECK-NEXT: movl (%rdi,%rdx,4), %edx
; CHECK-NEXT: movzbl %dl, %edi
; CHECK-NEXT: shrl $8, %edx
Expand Down
15 changes: 3 additions & 12 deletions llvm/test/CodeGen/X86/atomic-rm-bit-test-64.ll
Original file line number Diff line number Diff line change
Expand Up @@ -1392,11 +1392,8 @@ return: ; preds = %entry, %if.then
define i64 @atomic_shl1_xor_64_const_br(ptr %v) nounwind {
; CHECK-LABEL: atomic_shl1_xor_64_const_br:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xorl %eax, %eax
; CHECK-NEXT: lock btcq $4, (%rdi)
; CHECK-NEXT: setb %al
; CHECK-NEXT: shlq $4, %rax
; CHECK-NEXT: je .LBB48_1
; CHECK-NEXT: jae .LBB48_1
; CHECK-NEXT: # %bb.2: # %if.then
; CHECK-NEXT: movq 32(%rdi), %rax
; CHECK-NEXT: retq
Expand Down Expand Up @@ -1458,12 +1455,9 @@ return: ; preds = %entry, %if.then
define i64 @atomic_shl1_xor_64_const_brz(ptr %v) nounwind {
; CHECK-LABEL: atomic_shl1_xor_64_const_brz:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xorl %eax, %eax
; CHECK-NEXT: lock btcq $4, (%rdi)
; CHECK-NEXT: setb %al
; CHECK-NEXT: shlq $4, %rax
; CHECK-NEXT: movl $123, %eax
; CHECK-NEXT: je .LBB50_1
; CHECK-NEXT: jae .LBB50_1
; CHECK-NEXT: # %bb.2: # %return
; CHECK-NEXT: retq
; CHECK-NEXT: .LBB50_1: # %if.then
Expand Down Expand Up @@ -1524,11 +1518,8 @@ return: ; preds = %entry, %if.then
define i64 @atomic_shl1_xor_64_const_brnz(ptr %v) nounwind {
; CHECK-LABEL: atomic_shl1_xor_64_const_brnz:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: xorl %eax, %eax
; CHECK-NEXT: lock btcq $4, (%rdi)
; CHECK-NEXT: setb %al
; CHECK-NEXT: shlq $4, %rax
; CHECK-NEXT: je .LBB52_1
; CHECK-NEXT: jae .LBB52_1
; CHECK-NEXT: # %bb.2: # %if.then
; CHECK-NEXT: movq 32(%rdi), %rax
; CHECK-NEXT: retq
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/X86/avx512vnni-combine.ll
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ define <8 x i64> @foo_512(i32 %0, <8 x i64> %1, <8 x i64> %2, ptr %3) {
; CHECK-NEXT: # %bb.4: # %.preheader
; CHECK-NEXT: shlq $6, %rcx
; CHECK-NEXT: addq %rcx, %rsi
; CHECK-NEXT: shlq $6, %rax
; CHECK-NEXT: shll $6, %eax
; CHECK-NEXT: xorl %ecx, %ecx
; CHECK-NEXT: .p2align 4, 0x90
; CHECK-NEXT: .LBB1_5: # =>This Inner Loop Header: Depth=1
Expand Down
8 changes: 4 additions & 4 deletions llvm/test/CodeGen/X86/avxvnni-combine.ll
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ define <2 x i64> @foo_128(i32 %0, <2 x i64> %1, <2 x i64> %2, ptr %3) {
; AVX-NEXT: # %bb.4: # %.preheader
; AVX-NEXT: shlq $4, %rcx
; AVX-NEXT: addq %rcx, %rsi
; AVX-NEXT: shlq $4, %rax
; AVX-NEXT: shll $4, %eax
; AVX-NEXT: xorl %ecx, %ecx
; AVX-NEXT: .p2align 4, 0x90
; AVX-NEXT: .LBB1_5: # =>This Inner Loop Header: Depth=1
Expand Down Expand Up @@ -125,7 +125,7 @@ define <2 x i64> @foo_128(i32 %0, <2 x i64> %1, <2 x i64> %2, ptr %3) {
; AVX512-NEXT: # %bb.4: # %.preheader
; AVX512-NEXT: shlq $4, %rcx
; AVX512-NEXT: addq %rcx, %rsi
; AVX512-NEXT: shlq $4, %rax
; AVX512-NEXT: shll $4, %eax
; AVX512-NEXT: xorl %ecx, %ecx
; AVX512-NEXT: .p2align 4, 0x90
; AVX512-NEXT: .LBB1_5: # =>This Inner Loop Header: Depth=1
Expand Down Expand Up @@ -425,7 +425,7 @@ define <4 x i64> @foo_256(i32 %0, <4 x i64> %1, <4 x i64> %2, ptr %3) {
; AVX-NEXT: # %bb.4: # %.preheader
; AVX-NEXT: shlq $5, %rcx
; AVX-NEXT: addq %rcx, %rsi
; AVX-NEXT: shlq $5, %rax
; AVX-NEXT: shll $5, %eax
; AVX-NEXT: xorl %ecx, %ecx
; AVX-NEXT: .p2align 4, 0x90
; AVX-NEXT: .LBB4_5: # =>This Inner Loop Header: Depth=1
Expand Down Expand Up @@ -472,7 +472,7 @@ define <4 x i64> @foo_256(i32 %0, <4 x i64> %1, <4 x i64> %2, ptr %3) {
; AVX512-NEXT: # %bb.4: # %.preheader
; AVX512-NEXT: shlq $5, %rcx
; AVX512-NEXT: addq %rcx, %rsi
; AVX512-NEXT: shlq $5, %rax
; AVX512-NEXT: shll $5, %eax
; AVX512-NEXT: xorl %ecx, %ecx
; AVX512-NEXT: .p2align 4, 0x90
; AVX512-NEXT: .LBB4_5: # =>This Inner Loop Header: Depth=1
Expand Down
15 changes: 6 additions & 9 deletions llvm/test/CodeGen/X86/bswap.ll
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,8 @@ define i64 @not_bswap() {
; CHECK64-NEXT: movzwl var16(%rip), %eax
; CHECK64-NEXT: movl %eax, %ecx
; CHECK64-NEXT: shrl $8, %ecx
; CHECK64-NEXT: shlq $8, %rax
; CHECK64-NEXT: orq %rcx, %rax
; CHECK64-NEXT: shll $8, %eax
; CHECK64-NEXT: orl %ecx, %eax
; CHECK64-NEXT: retq
%init = load i16, ptr @var16
%big = zext i16 %init to i64
Expand Down Expand Up @@ -197,7 +197,7 @@ define i64 @not_useful_bswap() {
; CHECK64-LABEL: not_useful_bswap:
; CHECK64: # %bb.0:
; CHECK64-NEXT: movzbl var8(%rip), %eax
; CHECK64-NEXT: shlq $8, %rax
; CHECK64-NEXT: shll $8, %eax
; CHECK64-NEXT: retq
%init = load i8, ptr @var8
%big = zext i8 %init to i64
Expand All @@ -224,12 +224,9 @@ define i64 @finally_useful_bswap() {
;
; CHECK64-LABEL: finally_useful_bswap:
; CHECK64: # %bb.0:
; CHECK64-NEXT: movzwl var16(%rip), %ecx
; CHECK64-NEXT: movzbl %cl, %eax
; CHECK64-NEXT: # kill: def $ecx killed $ecx killed $rcx def $rcx
; CHECK64-NEXT: shrl $8, %ecx
; CHECK64-NEXT: shlq $8, %rax
; CHECK64-NEXT: orq %rcx, %rax
; CHECK64-NEXT: movzwl var16(%rip), %eax
; CHECK64-NEXT: bswapl %eax
; CHECK64-NEXT: shrl $16, %eax
; CHECK64-NEXT: retq
%init = load i16, ptr @var16
%big = zext i16 %init to i64
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/X86/buildvec-insertvec.ll
Original file line number Diff line number Diff line change
Expand Up @@ -832,7 +832,7 @@ define void @pr59781(ptr %in, ptr %out) {
; CHECK: # %bb.0:
; CHECK-NEXT: movzwl (%rdi), %eax
; CHECK-NEXT: movzbl 2(%rdi), %ecx
; CHECK-NEXT: shlq $16, %rcx
; CHECK-NEXT: shll $16, %ecx
; CHECK-NEXT: orq %rax, %rcx
; CHECK-NEXT: movq %rcx, (%rsi)
; CHECK-NEXT: retq
Expand Down
8 changes: 4 additions & 4 deletions llvm/test/CodeGen/X86/cmp-concat.ll
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ define i1 @cmp_anybits_concat_shl_shl_i16(i16 %x, i16 %y) {
; CHECK: # %bb.0:
; CHECK-NEXT: movzwl %di, %eax
; CHECK-NEXT: movzwl %si, %ecx
; CHECK-NEXT: shlq $8, %rcx
; CHECK-NEXT: orq %rax, %rcx
; CHECK-NEXT: shll $8, %ecx
; CHECK-NEXT: orl %eax, %ecx
; CHECK-NEXT: sete %al
; CHECK-NEXT: retq
%zx = zext i16 %x to i64
Expand All @@ -53,8 +53,8 @@ define i1 @cmp_anybits_concat_shl_shl_i16_commute(i16 %x, i16 %y) {
; CHECK: # %bb.0:
; CHECK-NEXT: movzwl %di, %eax
; CHECK-NEXT: movzwl %si, %ecx
; CHECK-NEXT: shlq $8, %rcx
; CHECK-NEXT: orq %rax, %rcx
; CHECK-NEXT: shll $8, %ecx
; CHECK-NEXT: orl %eax, %ecx
; CHECK-NEXT: sete %al
; CHECK-NEXT: retq
%zx = zext i16 %x to i64
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ define void @foo(ptr %arg3, i1 %icmp16) #0 {
; CHECK-NEXT: xorl %edi, %edi
; CHECK-NEXT: xorl %eax, %eax
; CHECK-NEXT: callq *%rax
; CHECK-NEXT: shlq $4, %r14
; CHECK-NEXT: shll $4, %r14d
; CHECK-NEXT: addq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Folded Reload
; CHECK-NEXT: movl %r13d, 0
; CHECK-NEXT: movb $0, 4
Expand Down
8 changes: 4 additions & 4 deletions llvm/test/CodeGen/X86/combine-bitreverse.ll
Original file line number Diff line number Diff line change
Expand Up @@ -368,20 +368,20 @@ define i64 @test_bitreverse_shli_bitreverse_i64(i64 %a) nounwind {
; X64-NEXT: bswapq %rax
; X64-NEXT: movl %eax, %ecx
; X64-NEXT: andl $235867919, %ecx # imm = 0xE0F0F0F
; X64-NEXT: shlq $4, %rcx
; X64-NEXT: shll $4, %ecx
; X64-NEXT: shrl $4, %eax
; X64-NEXT: andl $252645135, %eax # imm = 0xF0F0F0F
; X64-NEXT: orq %rcx, %rax
; X64-NEXT: orl %ecx, %eax
; X64-NEXT: movl %eax, %ecx
; X64-NEXT: andl $590558003, %ecx # imm = 0x23333333
; X64-NEXT: shrl $2, %eax
; X64-NEXT: andl $858993459, %eax # imm = 0x33333333
; X64-NEXT: leaq (%rax,%rcx,4), %rax
; X64-NEXT: leal (%rax,%rcx,4), %eax
; X64-NEXT: movl %eax, %ecx
; X64-NEXT: andl $357913941, %ecx # imm = 0x15555555
; X64-NEXT: shrl %eax
; X64-NEXT: andl $1431655765, %eax # imm = 0x55555555
; X64-NEXT: leaq (%rax,%rcx,2), %rax
; X64-NEXT: leal (%rax,%rcx,2), %eax
; X64-NEXT: retq
%1 = call i64 @llvm.bitreverse.i64(i64 %a)
%2 = shl i64 %1, 33
Expand Down
3 changes: 1 addition & 2 deletions llvm/test/CodeGen/X86/const-shift-of-constmasked.ll
Original file line number Diff line number Diff line change
Expand Up @@ -1933,8 +1933,7 @@ define i64 @test_i64_2147483647_mask_shl_1(i64 %a0) {
;
; X64-LABEL: test_i64_2147483647_mask_shl_1:
; X64: # %bb.0:
; X64-NEXT: andl $2147483647, %edi # imm = 0x7FFFFFFF
; X64-NEXT: leaq (%rdi,%rdi), %rax
; X64-NEXT: leal (%rdi,%rdi), %eax
; X64-NEXT: retq
%t0 = and i64 %a0, 2147483647
%t1 = shl i64 %t0, 1
Expand Down
29 changes: 14 additions & 15 deletions llvm/test/CodeGen/X86/dagcombine-shifts.ll
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ define i64 @fun7(i8 zeroext %v) {
; X64: # %bb.0: # %entry
; X64-NEXT: sarb $4, %dil
; X64-NEXT: movzbl %dil, %eax
; X64-NEXT: shlq $4, %rax
; X64-NEXT: shll $4, %eax
; X64-NEXT: retq
entry:
%shr = ashr i8 %v, 4
Expand All @@ -166,9 +166,7 @@ define i64 @fun8(i16 zeroext %v) {
; X64-LABEL: fun8:
; X64: # %bb.0: # %entry
; X64-NEXT: movswl %di, %eax
; X64-NEXT: shrl $4, %eax
; X64-NEXT: movzwl %ax, %eax
; X64-NEXT: shlq $4, %rax
; X64-NEXT: andl $1048560, %eax # imm = 0xFFFF0
; X64-NEXT: retq
entry:
%shr = ashr i16 %v, 4
Expand Down Expand Up @@ -217,11 +215,12 @@ define i64 @fun10(i8 zeroext %v) {
;
; X64-LABEL: fun10:
; X64: # %bb.0: # %entry
; X64-NEXT: shrb $4, %dil
; X64-NEXT: movzbl %dil, %ecx
; X64-NEXT: movq %rcx, %rax
; X64-NEXT: shlq $4, %rax
; X64-NEXT: orq %rcx, %rax
; X64-NEXT: # kill: def $edi killed $edi def $rdi
; X64-NEXT: movl %edi, %eax
; X64-NEXT: shrb $4, %al
; X64-NEXT: movzbl %al, %eax
; X64-NEXT: andl $-16, %edi
; X64-NEXT: orq %rdi, %rax
; X64-NEXT: retq
entry:
%shr = lshr i8 %v, 4
Expand All @@ -245,9 +244,9 @@ define i64 @fun11(i16 zeroext %v) {
; X64-LABEL: fun11:
; X64: # %bb.0: # %entry
; X64-NEXT: # kill: def $edi killed $edi def $rdi
; X64-NEXT: shrl $4, %edi
; X64-NEXT: movq %rdi, %rax
; X64-NEXT: shlq $4, %rax
; X64-NEXT: movl %edi, %eax
; X64-NEXT: shrl $4, %eax
; X64-NEXT: andl $-16, %edi
; X64-NEXT: addq %rdi, %rax
; X64-NEXT: retq
entry:
Expand All @@ -273,9 +272,9 @@ define i64 @fun12(i32 zeroext %v) {
; X64-LABEL: fun12:
; X64: # %bb.0: # %entry
; X64-NEXT: # kill: def $edi killed $edi def $rdi
; X64-NEXT: shrl $4, %edi
; X64-NEXT: movq %rdi, %rax
; X64-NEXT: shlq $4, %rax
; X64-NEXT: movl %edi, %eax
; X64-NEXT: shrl $4, %eax
; X64-NEXT: andl $-16, %edi
; X64-NEXT: addq %rdi, %rax
; X64-NEXT: retq
entry:
Expand Down
31 changes: 15 additions & 16 deletions llvm/test/CodeGen/X86/divmod128.ll
Original file line number Diff line number Diff line change
Expand Up @@ -425,36 +425,35 @@ entry:
define i128 @urem_i128_12(i128 %x) nounwind {
; X86-64-LABEL: urem_i128_12:
; X86-64: # %bb.0: # %entry
; X86-64-NEXT: movq %rsi, %rax
; X86-64-NEXT: shldq $62, %rdi, %rax
; X86-64-NEXT: movq %rsi, %rcx
; X86-64-NEXT: shldq $62, %rdi, %rcx
; X86-64-NEXT: shrq $2, %rsi
; X86-64-NEXT: addq %rax, %rsi
; X86-64-NEXT: adcq $0, %rsi
; X86-64-NEXT: movabsq $-6148914691236517205, %rcx # imm = 0xAAAAAAAAAAAAAAAB
; X86-64-NEXT: movq %rsi, %rax
; X86-64-NEXT: mulq %rcx
; X86-64-NEXT: addq %rsi, %rcx
; X86-64-NEXT: adcq $0, %rcx
; X86-64-NEXT: movabsq $-6148914691236517205, %rdx # imm = 0xAAAAAAAAAAAAAAAB
; X86-64-NEXT: movq %rcx, %rax
; X86-64-NEXT: mulq %rdx
; X86-64-NEXT: shrq %rdx
; X86-64-NEXT: leaq (%rdx,%rdx,2), %rax
; X86-64-NEXT: subq %rax, %rsi
; X86-64-NEXT: leal (%rdx,%rdx,2), %eax
; X86-64-NEXT: subl %eax, %ecx
; X86-64-NEXT: andl $3, %edi
; X86-64-NEXT: leaq (%rdi,%rsi,4), %rax
; X86-64-NEXT: leaq (%rdi,%rcx,4), %rax
; X86-64-NEXT: xorl %edx, %edx
; X86-64-NEXT: retq
;
; WIN64-LABEL: urem_i128_12:
; WIN64: # %bb.0: # %entry
; WIN64-NEXT: movq %rdx, %r8
; WIN64-NEXT: movq %rdx, %rax
; WIN64-NEXT: shldq $62, %rcx, %rax
; WIN64-NEXT: shrq $2, %r8
; WIN64-NEXT: addq %rax, %r8
; WIN64-NEXT: shldq $62, %rcx, %r8
; WIN64-NEXT: shrq $2, %rdx
; WIN64-NEXT: addq %rdx, %r8
; WIN64-NEXT: adcq $0, %r8
; WIN64-NEXT: movabsq $-6148914691236517205, %rdx # imm = 0xAAAAAAAAAAAAAAAB
; WIN64-NEXT: movq %r8, %rax
; WIN64-NEXT: mulq %rdx
; WIN64-NEXT: shrq %rdx
; WIN64-NEXT: leaq (%rdx,%rdx,2), %rax
; WIN64-NEXT: subq %rax, %r8
; WIN64-NEXT: leal (%rdx,%rdx,2), %eax
; WIN64-NEXT: subl %eax, %r8d
; WIN64-NEXT: andl $3, %ecx
; WIN64-NEXT: leaq (%rcx,%r8,4), %rax
; WIN64-NEXT: xorl %edx, %edx
Expand Down
6 changes: 3 additions & 3 deletions llvm/test/CodeGen/X86/extract-bits.ll
Original file line number Diff line number Diff line change
Expand Up @@ -8091,9 +8091,9 @@ define void @pr38938(ptr %a0, ptr %a1) nounwind {
; X64-NOBMI-LABEL: pr38938:
; X64-NOBMI: # %bb.0:
; X64-NOBMI-NEXT: movl (%rsi), %eax
; X64-NOBMI-NEXT: shrl $21, %eax
; X64-NOBMI-NEXT: andl $1023, %eax # imm = 0x3FF
; X64-NOBMI-NEXT: incl (%rdi,%rax,4)
; X64-NOBMI-NEXT: shrl $19, %eax
; X64-NOBMI-NEXT: andl $4092, %eax # imm = 0xFFC
; X64-NOBMI-NEXT: incl (%rdi,%rax)
; X64-NOBMI-NEXT: retq
;
; X64-BMINOTBM-LABEL: pr38938:
Expand Down
3 changes: 1 addition & 2 deletions llvm/test/CodeGen/X86/fold-and-shift.ll
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ define i32 @t2(ptr %X, i32 %i) {
; X64-LABEL: t2:
; X64: # %bb.0: # %entry
; X64-NEXT: movzwl %si, %eax
; X64-NEXT: addl %eax, %eax
; X64-NEXT: movl (%rdi,%rax,2), %eax
; X64-NEXT: movl (%rdi,%rax,4), %eax
; X64-NEXT: retq
entry:
%tmp2 = shl i32 %i, 1
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/X86/fp128-i128.ll
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ define fp128 @TestI128_1(fp128 %x) #0 {
; SSE-NEXT: xorl %ecx, %ecx
; SSE-NEXT: testl %eax, %eax
; SSE-NEXT: sets %cl
; SSE-NEXT: shlq $4, %rcx
; SSE-NEXT: shll $4, %ecx
; SSE-NEXT: movaps {{\.?LCPI[0-9]+_[0-9]+}}(%rcx), %xmm0
; SSE-NEXT: popq %rax
; SSE-NEXT: retq
Expand All @@ -151,7 +151,7 @@ define fp128 @TestI128_1(fp128 %x) #0 {
; AVX-NEXT: xorl %ecx, %ecx
; AVX-NEXT: testl %eax, %eax
; AVX-NEXT: sets %cl
; AVX-NEXT: shlq $4, %rcx
; AVX-NEXT: shll $4, %ecx
; AVX-NEXT: vmovaps {{\.?LCPI[0-9]+_[0-9]+}}(%rcx), %xmm0
; AVX-NEXT: popq %rax
; AVX-NEXT: retq
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/X86/lea-dagdag.ll
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ define i64 @and_i32_zext_shl_add_i64_overshift(i64 %t0, i32 %t1) {
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
; CHECK-NEXT: andl $8, %esi
; CHECK-NEXT: shlq $4, %rsi
; CHECK-NEXT: shll $4, %esi
; CHECK-NEXT: leaq (%rsi,%rdi), %rax
; CHECK-NEXT: retq
%t4 = and i32 %t1, 8
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/X86/lea-opt2.ll
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ define void @test9(i64 %p, i64 %s) {
; CHECK-NEXT: xorl %ecx, %ecx
; CHECK-NEXT: testl $4095, %eax # imm = 0xFFF
; CHECK-NEXT: setne %cl
; CHECK-NEXT: shlq $12, %rcx
; CHECK-NEXT: shll $12, %ecx
; CHECK-NEXT: addq %rax, %rcx
; CHECK-NEXT: andq $-4096, %rcx # imm = 0xF000
; CHECK-NEXT: addq %rcx, %rdi
Expand Down
42 changes: 20 additions & 22 deletions llvm/test/CodeGen/X86/lsr-loop-exit-cond.ll
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
; GENERIC-NEXT: movzbl %r8b, %r14d
; GENERIC-NEXT: ## kill: def $r8d killed $r8d def $r8
; GENERIC-NEXT: shrl $24, %r8d
; GENERIC-NEXT: movl %ebx, %ebp
; GENERIC-NEXT: shrl $16, %ebp
; GENERIC-NEXT: movzbl %bpl, %r15d
; GENERIC-NEXT: movl (%rax,%r15,4), %ebp
; GENERIC-NEXT: movl %ebx, %r15d
; GENERIC-NEXT: shrl $14, %r15d
; GENERIC-NEXT: andl $1020, %r15d ## imm = 0x3FC
; GENERIC-NEXT: movl (%rax,%r15), %ebp
; GENERIC-NEXT: xorl (%rdi,%r8,4), %ebp
; GENERIC-NEXT: xorl -12(%r9), %ebp
; GENERIC-NEXT: shrl $24, %ebx
Expand All @@ -46,9 +46,9 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
; GENERIC-NEXT: ## %bb.2: ## %bb1
; GENERIC-NEXT: ## in Loop: Header=BB0_1 Depth=1
; GENERIC-NEXT: movl %r14d, %ebx
; GENERIC-NEXT: shrl $16, %ebx
; GENERIC-NEXT: movzbl %bl, %ebx
; GENERIC-NEXT: xorl (%rax,%rbx,4), %r8d
; GENERIC-NEXT: shrl $14, %ebx
; GENERIC-NEXT: andl $1020, %ebx ## imm = 0x3FC
; GENERIC-NEXT: xorl (%rax,%rbx), %r8d
; GENERIC-NEXT: xorl -4(%r9), %r8d
; GENERIC-NEXT: shrl $24, %r14d
; GENERIC-NEXT: movzbl %bpl, %ebx
Expand All @@ -61,9 +61,9 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
; GENERIC-NEXT: shlq $4, %rcx
; GENERIC-NEXT: andl $-16777216, %r8d ## imm = 0xFF000000
; GENERIC-NEXT: movl %r14d, %r9d
; GENERIC-NEXT: shrl $16, %r9d
; GENERIC-NEXT: movzbl %r9b, %r9d
; GENERIC-NEXT: movzbl 2(%rax,%r9,4), %r9d
; GENERIC-NEXT: shrl $14, %r9d
; GENERIC-NEXT: andl $1020, %r9d ## imm = 0x3FC
; GENERIC-NEXT: movzbl 2(%rax,%r9), %r9d
; GENERIC-NEXT: shll $16, %r9d
; GENERIC-NEXT: orl %r8d, %r9d
; GENERIC-NEXT: xorl 16(%rcx,%rdx), %r9d
Expand Down Expand Up @@ -93,7 +93,6 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
;
; ATOM-LABEL: t:
; ATOM: ## %bb.0: ## %entry
; ATOM-NEXT: pushq %rbp
; ATOM-NEXT: pushq %r15
; ATOM-NEXT: pushq %r14
; ATOM-NEXT: pushq %rbx
Expand All @@ -113,10 +112,10 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
; ATOM-NEXT: movl %r8d, %r14d
; ATOM-NEXT: movzbl %r8b, %r8d
; ATOM-NEXT: shrl $24, %r15d
; ATOM-NEXT: shrl $16, %ebx
; ATOM-NEXT: shrl $14, %ebx
; ATOM-NEXT: shrl $24, %r14d
; ATOM-NEXT: movzbl %bl, %ebx
; ATOM-NEXT: movl (%rax,%rbx,4), %ebx
; ATOM-NEXT: andl $1020, %ebx ## imm = 0x3FC
; ATOM-NEXT: movl (%rax,%rbx), %ebx
; ATOM-NEXT: xorl (%rdi,%r14,4), %ebx
; ATOM-NEXT: movl (%r10,%r8,4), %r14d
; ATOM-NEXT: xorl -12(%r9), %ebx
Expand All @@ -129,12 +128,12 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
; ATOM-NEXT: jb LBB0_3
; ATOM-NEXT: ## %bb.2: ## %bb1
; ATOM-NEXT: ## in Loop: Header=BB0_1 Depth=1
; ATOM-NEXT: movl %r14d, %ebp
; ATOM-NEXT: movl %r14d, %r15d
; ATOM-NEXT: movzbl %bl, %ebx
; ATOM-NEXT: shrl $24, %r14d
; ATOM-NEXT: shrl $16, %ebp
; ATOM-NEXT: movzbl %bpl, %r15d
; ATOM-NEXT: xorl (%rax,%r15,4), %r8d
; ATOM-NEXT: shrl $14, %r15d
; ATOM-NEXT: andl $1020, %r15d ## imm = 0x3FC
; ATOM-NEXT: xorl (%rax,%r15), %r8d
; ATOM-NEXT: movl (%r10,%rbx,4), %r15d
; ATOM-NEXT: xorl (%rdi,%r14,4), %r15d
; ATOM-NEXT: xorl -4(%r9), %r8d
Expand All @@ -146,11 +145,11 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
; ATOM-NEXT: andl $-16777216, %r8d ## imm = 0xFF000000
; ATOM-NEXT: shrl $8, %r14d
; ATOM-NEXT: shlq $4, %rcx
; ATOM-NEXT: shrl $16, %r9d
; ATOM-NEXT: shrl $14, %r9d
; ATOM-NEXT: movzbl 3(%rdi,%r14,4), %edi
; ATOM-NEXT: movzbl %r9b, %r9d
; ATOM-NEXT: andl $1020, %r9d ## imm = 0x3FC
; ATOM-NEXT: shll $24, %edi
; ATOM-NEXT: movzbl 2(%rax,%r9,4), %r9d
; ATOM-NEXT: movzbl 2(%rax,%r9), %r9d
; ATOM-NEXT: shll $16, %r9d
; ATOM-NEXT: orl %r8d, %r9d
; ATOM-NEXT: movzbl %bl, %r8d
Expand All @@ -172,7 +171,6 @@ define void @t(i8* nocapture %in, i8* nocapture %out, i32* nocapture %rk, i32 %r
; ATOM-NEXT: popq %rbx
; ATOM-NEXT: popq %r14
; ATOM-NEXT: popq %r15
; ATOM-NEXT: popq %rbp
; ATOM-NEXT: retq
entry:
%0 = load i32, i32* %rk, align 4 ; <i32> [#uses=1]
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/X86/parity.ll
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@ define i64 @parity_64_shift(i64 %0) {
; X64-NOPOPCNT-NEXT: xorl %eax, %eax
; X64-NOPOPCNT-NEXT: xorb %ch, %cl
; X64-NOPOPCNT-NEXT: setnp %al
; X64-NOPOPCNT-NEXT: addq %rax, %rax
; X64-NOPOPCNT-NEXT: addl %eax, %eax
; X64-NOPOPCNT-NEXT: retq
;
; X86-POPCNT-LABEL: parity_64_shift:
Expand All @@ -654,7 +654,7 @@ define i64 @parity_64_shift(i64 %0) {
; X64-POPCNT: # %bb.0:
; X64-POPCNT-NEXT: popcntq %rdi, %rax
; X64-POPCNT-NEXT: andl $1, %eax
; X64-POPCNT-NEXT: addq %rax, %rax
; X64-POPCNT-NEXT: addl %eax, %eax
; X64-POPCNT-NEXT: retq
%2 = tail call i64 @llvm.ctpop.i64(i64 %0)
%3 = shl nuw nsw i64 %2, 1
Expand Down
111 changes: 52 additions & 59 deletions llvm/test/CodeGen/X86/pr62653.ll
Original file line number Diff line number Diff line change
Expand Up @@ -4,124 +4,117 @@
define <64 x i4> @pr62653(<64 x i4> %a0) nounwind {
; CHECK-LABEL: pr62653:
; CHECK: # %bb.0:
; CHECK-NEXT: # kill: def $r9d killed $r9d def $r9
; CHECK-NEXT: # kill: def $r8d killed $r8d def $r8
; CHECK-NEXT: # kill: def $ecx killed $ecx def $rcx
; CHECK-NEXT: # kill: def $edx killed $edx def $rdx
; CHECK-NEXT: # kill: def $esi killed $esi def $rsi
; CHECK-NEXT: movq %rdi, %rax
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
; CHECK-NEXT: andl $15, %edi
; CHECK-NEXT: shll $4, %edi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
; CHECK-NEXT: andl $15, %r10d
; CHECK-NEXT: shlq $4, %r10
; CHECK-NEXT: orq %rdi, %r10
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
; CHECK-NEXT: andl $15, %edi
; CHECK-NEXT: shlq $8, %rdi
; CHECK-NEXT: shll $8, %edi
; CHECK-NEXT: orq %r10, %rdi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
; CHECK-NEXT: andl $15, %r10d
; CHECK-NEXT: shlq $12, %r10
; CHECK-NEXT: shll $12, %r10d
; CHECK-NEXT: orq %rdi, %r10
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d
; CHECK-NEXT: andl $15, %r11d
; CHECK-NEXT: shlq $16, %r11
; CHECK-NEXT: orq %r10, %r11
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
; CHECK-NEXT: andl $15, %edi
; CHECK-NEXT: shlq $20, %rdi
; CHECK-NEXT: orq %r11, %rdi
; CHECK-NEXT: shll $16, %edi
; CHECK-NEXT: orq %r10, %rdi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
; CHECK-NEXT: andl $15, %r10d
; CHECK-NEXT: shlq $24, %r10
; CHECK-NEXT: shll $20, %r10d
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d
; CHECK-NEXT: andl $15, %r11d
; CHECK-NEXT: shlq $28, %r11
; CHECK-NEXT: shll $24, %r11d
; CHECK-NEXT: orq %r10, %r11
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
; CHECK-NEXT: andl $15, %r10d
; CHECK-NEXT: shlq $32, %r10
; CHECK-NEXT: shll $28, %r10d
; CHECK-NEXT: orq %r11, %r10
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d
; CHECK-NEXT: andl $15, %r11d
; CHECK-NEXT: shlq $36, %r11
; CHECK-NEXT: shlq $32, %r11
; CHECK-NEXT: orq %r10, %r11
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
; CHECK-NEXT: andl $15, %r10d
; CHECK-NEXT: shlq $40, %r10
; CHECK-NEXT: shlq $36, %r10
; CHECK-NEXT: orq %r11, %r10
; CHECK-NEXT: orq %rdi, %r10
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
; CHECK-NEXT: andl $15, %edi
; CHECK-NEXT: shlq $40, %rdi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d
; CHECK-NEXT: andl $15, %r11d
; CHECK-NEXT: shlq $44, %r11
; CHECK-NEXT: orq %r10, %r11
; CHECK-NEXT: orq %rdi, %r11
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
; CHECK-NEXT: andl $15, %edi
; CHECK-NEXT: shlq $48, %rdi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
; CHECK-NEXT: andl $15, %r10d
; CHECK-NEXT: shlq $52, %r10
; CHECK-NEXT: orq %rdi, %r10
; CHECK-NEXT: orq %r11, %r10
; CHECK-NEXT: movq %r10, 8(%rax)
; CHECK-NEXT: orq %r11, %rdi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d
; CHECK-NEXT: andl $15, %r11d
; CHECK-NEXT: shlq $52, %r11
; CHECK-NEXT: orq %rdi, %r11
; CHECK-NEXT: orq %r10, %r11
; CHECK-NEXT: movq %r11, 8(%rax)
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
; CHECK-NEXT: andl $15, %edi
; CHECK-NEXT: shlq $32, %rdi
; CHECK-NEXT: andl $15, %esi
; CHECK-NEXT: andl $15, %edx
; CHECK-NEXT: shlq $4, %rdx
; CHECK-NEXT: orq %rsi, %rdx
; CHECK-NEXT: shll $4, %edx
; CHECK-NEXT: orl %esi, %edx
; CHECK-NEXT: andl $15, %ecx
; CHECK-NEXT: shlq $8, %rcx
; CHECK-NEXT: orq %rdx, %rcx
; CHECK-NEXT: shll $8, %ecx
; CHECK-NEXT: orl %edx, %ecx
; CHECK-NEXT: andl $15, %r8d
; CHECK-NEXT: shlq $12, %r8
; CHECK-NEXT: orq %rcx, %r8
; CHECK-NEXT: shll $12, %r8d
; CHECK-NEXT: orl %ecx, %r8d
; CHECK-NEXT: andl $15, %r9d
; CHECK-NEXT: shlq $16, %r9
; CHECK-NEXT: orq %r8, %r9
; CHECK-NEXT: shll $16, %r9d
; CHECK-NEXT: orl %r8d, %r9d
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
; CHECK-NEXT: andl $15, %ecx
; CHECK-NEXT: shlq $20, %rcx
; CHECK-NEXT: orq %r9, %rcx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %esi
; CHECK-NEXT: andl $15, %esi
; CHECK-NEXT: shlq $24, %rsi
; CHECK-NEXT: shll $20, %ecx
; CHECK-NEXT: orl %r9d, %ecx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx
; CHECK-NEXT: andl $15, %edx
; CHECK-NEXT: shlq $28, %rdx
; CHECK-NEXT: orq %rsi, %rdx
; CHECK-NEXT: orq %rcx, %rdx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
; CHECK-NEXT: andl $15, %ecx
; CHECK-NEXT: shlq $32, %rcx
; CHECK-NEXT: shll $24, %edx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %esi
; CHECK-NEXT: andl $15, %esi
; CHECK-NEXT: shlq $36, %rsi
; CHECK-NEXT: orq %rcx, %rsi
; CHECK-NEXT: shll $28, %esi
; CHECK-NEXT: orl %edx, %esi
; CHECK-NEXT: orl %ecx, %esi
; CHECK-NEXT: orq %rdi, %rsi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
; CHECK-NEXT: andl $15, %ecx
; CHECK-NEXT: shlq $40, %rcx
; CHECK-NEXT: shlq $36, %rcx
; CHECK-NEXT: orq %rsi, %rcx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx
; CHECK-NEXT: andl $15, %edx
; CHECK-NEXT: shlq $40, %rdx
; CHECK-NEXT: orq %rcx, %rdx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
; CHECK-NEXT: andl $15, %ecx
; CHECK-NEXT: shlq $44, %rcx
; CHECK-NEXT: orq %rdx, %rcx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx
; CHECK-NEXT: andl $15, %edx
; CHECK-NEXT: shlq $44, %rdx
; CHECK-NEXT: shlq $48, %rdx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %esi
; CHECK-NEXT: andl $15, %esi
; CHECK-NEXT: shlq $48, %rsi
; CHECK-NEXT: shlq $52, %rsi
; CHECK-NEXT: orq %rdx, %rsi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %edx
; CHECK-NEXT: andl $15, %edx
; CHECK-NEXT: shlq $52, %rdx
; CHECK-NEXT: shlq $56, %rdx
; CHECK-NEXT: orq %rsi, %rdx
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %esi
; CHECK-NEXT: andl $15, %esi
; CHECK-NEXT: shlq $56, %rsi
; CHECK-NEXT: shlq $60, %rsi
; CHECK-NEXT: orq %rdx, %rsi
; CHECK-NEXT: orq %rcx, %rsi
; CHECK-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
; CHECK-NEXT: shlq $60, %rcx
; CHECK-NEXT: orq %rsi, %rcx
; CHECK-NEXT: movq %rcx, (%rax)
; CHECK-NEXT: movq %rsi, (%rax)
; CHECK-NEXT: retq
%res = shufflevector <64 x i4> %a0, <64 x i4> zeroinitializer, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 64, i32 65, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
ret <64 x i4> %res
Expand Down
24 changes: 12 additions & 12 deletions llvm/test/CodeGen/X86/select.ll
Original file line number Diff line number Diff line change
Expand Up @@ -393,22 +393,22 @@ define void @test6(i32 %C, ptr %A, ptr %B) nounwind {
define x86_fp80 @test7(i32 %tmp8) nounwind {
; GENERIC-LABEL: test7:
; GENERIC: ## %bb.0:
; GENERIC-NEXT: xorl %eax, %eax
; GENERIC-NEXT: testl %edi, %edi
; GENERIC-NEXT: setns %al
; GENERIC-NEXT: shlq $4, %rax
; GENERIC-NEXT: leaq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %rcx
; GENERIC-NEXT: fldt (%rax,%rcx)
; GENERIC-NEXT: ## kill: def $edi killed $edi def $rdi
; GENERIC-NEXT: notl %edi
; GENERIC-NEXT: shrl $27, %edi
; GENERIC-NEXT: andl $-16, %edi
; GENERIC-NEXT: leaq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %rax
; GENERIC-NEXT: fldt (%rdi,%rax)
; GENERIC-NEXT: retq
;
; ATOM-LABEL: test7:
; ATOM: ## %bb.0:
; ATOM-NEXT: xorl %eax, %eax
; ATOM-NEXT: leaq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %rcx
; ATOM-NEXT: testl %edi, %edi
; ATOM-NEXT: setns %al
; ATOM-NEXT: shlq $4, %rax
; ATOM-NEXT: fldt (%rax,%rcx)
; ATOM-NEXT: ## kill: def $edi killed $edi def $rdi
; ATOM-NEXT: leaq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %rax
; ATOM-NEXT: notl %edi
; ATOM-NEXT: shrl $27, %edi
; ATOM-NEXT: andl $-16, %edi
; ATOM-NEXT: fldt (%rdi,%rax)
; ATOM-NEXT: retq
;
; ATHLON-LABEL: test7:
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/X86/select_const.ll
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ define i64 @select_pow2_diff_neg_invert(i1 zeroext %cond) {
; X64: # %bb.0:
; X64-NEXT: xorb $1, %dil
; X64-NEXT: movzbl %dil, %eax
; X64-NEXT: shlq $7, %rax
; X64-NEXT: shll $7, %eax
; X64-NEXT: addq $-99, %rax
; X64-NEXT: retq
%sel = select i1 %cond, i64 -99, i64 29
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/X86/selectcc-to-shiftand.ll
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ define i64 @sel_shift_bool_i64(i1 %t) {
; ANY: # %bb.0:
; ANY-NEXT: movl %edi, %eax
; ANY-NEXT: andl $1, %eax
; ANY-NEXT: shlq $16, %rax
; ANY-NEXT: shll $16, %eax
; ANY-NEXT: retq
%shl = select i1 %t, i64 65536, i64 0
ret i64 %shl
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/X86/setcc.ll
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ define i64 @t3(i64 %x) nounwind readnone ssp {
; X64-NEXT: xorl %eax, %eax
; X64-NEXT: cmpq $18, %rdi
; X64-NEXT: setb %al
; X64-NEXT: shlq $6, %rax
; X64-NEXT: shll $6, %eax
; X64-NEXT: retq
%t0 = icmp ult i64 %x, 18
%if = select i1 %t0, i64 64, i64 0
Expand Down
13 changes: 6 additions & 7 deletions llvm/test/CodeGen/X86/shift-combine.ll
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,8 @@ define dso_local i32 @test_lshr_and(i32 %x) {
; X64-LABEL: test_lshr_and:
; X64: # %bb.0:
; X64-NEXT: # kill: def $edi killed $edi def $rdi
; X64-NEXT: shrl $2, %edi
; X64-NEXT: andl $3, %edi
; X64-NEXT: movl array(,%rdi,4), %eax
; X64-NEXT: andl $12, %edi
; X64-NEXT: movl array(%rdi), %eax
; X64-NEXT: retq
%tmp2 = lshr i32 %x, 2
%tmp3 = and i32 %tmp2, 3
Expand Down Expand Up @@ -104,8 +103,8 @@ define dso_local ptr @test_exact4(i32 %a, i32 %b, ptr %x) {
; X64: # %bb.0:
; X64-NEXT: # kill: def $esi killed $esi def $rsi
; X64-NEXT: subl %edi, %esi
; X64-NEXT: shrl $3, %esi
; X64-NEXT: leaq (%rdx,%rsi,4), %rax
; X64-NEXT: shrl %esi
; X64-NEXT: leaq (%rsi,%rdx), %rax
; X64-NEXT: retq
%sub = sub i32 %b, %a
%shr = lshr exact i32 %sub, 3
Expand All @@ -126,8 +125,8 @@ define dso_local ptr @test_exact5(i32 %a, i32 %b, ptr %x) {
; X64: # %bb.0:
; X64-NEXT: # kill: def $esi killed $esi def $rsi
; X64-NEXT: subl %edi, %esi
; X64-NEXT: shrl $3, %esi
; X64-NEXT: leaq (%rdx,%rsi,4), %rax
; X64-NEXT: shrl %esi
; X64-NEXT: leaq (%rsi,%rdx), %rax
; X64-NEXT: retq
%sub = sub i32 %b, %a
%shr = lshr exact i32 %sub, 3
Expand Down
80 changes: 40 additions & 40 deletions llvm/test/CodeGen/X86/vector-shuffle-variable-128.ll
Original file line number Diff line number Diff line change
Expand Up @@ -255,28 +255,28 @@ define <8 x i16> @var_shuffle_v8i16_v8i16_xxxxxxxx_i16(<8 x i16> %x, i16 %i0, i1
; SSE2-NEXT: andl $7, %r8d
; SSE2-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
; SSE2-NEXT: andl $7, %r9d
; SSE2-NEXT: movzwl -24(%rsp,%rcx,2), %ecx
; SSE2-NEXT: movd %ecx, %xmm0
; SSE2-NEXT: movzwl -24(%rsp,%rdx,2), %ecx
; SSE2-NEXT: movd %ecx, %xmm1
; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
; SSE2-NEXT: movzwl -24(%rsp,%rsi,2), %ecx
; SSE2-NEXT: movd %ecx, %xmm2
; SSE2-NEXT: movzwl -24(%rsp,%rdi,2), %ecx
; SSE2-NEXT: movd %ecx, %xmm0
; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; SSE2-NEXT: movzwl -24(%rsp,%r9,2), %ecx
; SSE2-NEXT: movd %ecx, %xmm1
; SSE2-NEXT: movzwl -24(%rsp,%r8,2), %ecx
; SSE2-NEXT: movd %ecx, %xmm2
; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
; SSE2-NEXT: movzwl -24(%rsp,%r10,2), %ecx
; SSE2-NEXT: movd %ecx, %xmm1
; SSE2-NEXT: movzwl -24(%rsp,%r10,2), %r10d
; SSE2-NEXT: movd %r10d, %xmm0
; SSE2-NEXT: movzwl -24(%rsp,%rax,2), %eax
; SSE2-NEXT: movd %eax, %xmm1
; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
; SSE2-NEXT: movzwl -24(%rsp,%r9,2), %eax
; SSE2-NEXT: movd %eax, %xmm0
; SSE2-NEXT: movzwl -24(%rsp,%r8,2), %eax
; SSE2-NEXT: movd %eax, %xmm2
; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
; SSE2-NEXT: movzwl -24(%rsp,%rcx,2), %eax
; SSE2-NEXT: movd %eax, %xmm0
; SSE2-NEXT: movzwl -24(%rsp,%rdx,2), %eax
; SSE2-NEXT: movd %eax, %xmm1
; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
; SSE2-NEXT: movzwl -24(%rsp,%rsi,2), %eax
; SSE2-NEXT: movd %eax, %xmm3
; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
; SSE2-NEXT: movzwl -24(%rsp,%rdi,2), %eax
; SSE2-NEXT: movd %eax, %xmm0
; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
; SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; SSE2-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
; SSE2-NEXT: retq
;
Expand All @@ -299,28 +299,28 @@ define <8 x i16> @var_shuffle_v8i16_v8i16_xxxxxxxx_i16(<8 x i16> %x, i16 %i0, i1
; SSSE3-NEXT: andl $7, %r8d
; SSSE3-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
; SSSE3-NEXT: andl $7, %r9d
; SSSE3-NEXT: movzwl -24(%rsp,%rcx,2), %ecx
; SSSE3-NEXT: movd %ecx, %xmm0
; SSSE3-NEXT: movzwl -24(%rsp,%rdx,2), %ecx
; SSSE3-NEXT: movd %ecx, %xmm1
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
; SSSE3-NEXT: movzwl -24(%rsp,%rsi,2), %ecx
; SSSE3-NEXT: movd %ecx, %xmm2
; SSSE3-NEXT: movzwl -24(%rsp,%rdi,2), %ecx
; SSSE3-NEXT: movd %ecx, %xmm0
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; SSSE3-NEXT: movzwl -24(%rsp,%r9,2), %ecx
; SSSE3-NEXT: movd %ecx, %xmm1
; SSSE3-NEXT: movzwl -24(%rsp,%r8,2), %ecx
; SSSE3-NEXT: movd %ecx, %xmm2
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
; SSSE3-NEXT: movzwl -24(%rsp,%r10,2), %ecx
; SSSE3-NEXT: movd %ecx, %xmm1
; SSSE3-NEXT: movzwl -24(%rsp,%r10,2), %r10d
; SSSE3-NEXT: movd %r10d, %xmm0
; SSSE3-NEXT: movzwl -24(%rsp,%rax,2), %eax
; SSSE3-NEXT: movd %eax, %xmm1
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
; SSSE3-NEXT: movzwl -24(%rsp,%r9,2), %eax
; SSSE3-NEXT: movd %eax, %xmm0
; SSSE3-NEXT: movzwl -24(%rsp,%r8,2), %eax
; SSSE3-NEXT: movd %eax, %xmm2
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
; SSSE3-NEXT: movzwl -24(%rsp,%rcx,2), %eax
; SSSE3-NEXT: movd %eax, %xmm0
; SSSE3-NEXT: movzwl -24(%rsp,%rdx,2), %eax
; SSSE3-NEXT: movd %eax, %xmm1
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3]
; SSSE3-NEXT: movzwl -24(%rsp,%rsi,2), %eax
; SSSE3-NEXT: movd %eax, %xmm3
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
; SSSE3-NEXT: movzwl -24(%rsp,%rdi,2), %eax
; SSSE3-NEXT: movd %eax, %xmm0
; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
; SSSE3-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
; SSSE3-NEXT: retq
;
Expand Down
224 changes: 112 additions & 112 deletions llvm/test/CodeGen/X86/vector-shuffle-variable-256.ll
Original file line number Diff line number Diff line change
Expand Up @@ -293,52 +293,52 @@ define <16 x i16> @var_shuffle_v16i16_v16i16_xxxxxxxxxxxxxxxx_i16(<16 x i16> %x,
; AVX1-NEXT: # kill: def $edx killed $edx def $rdx
; AVX1-NEXT: # kill: def $esi killed $esi def $rsi
; AVX1-NEXT: # kill: def $edi killed $edi def $rdi
; AVX1-NEXT: andl $15, %edi
; AVX1-NEXT: vmovaps %ymm0, (%rsp)
; AVX1-NEXT: movzwl (%rsp,%rdi,2), %eax
; AVX1-NEXT: vmovd %eax, %xmm0
; AVX1-NEXT: andl $15, %esi
; AVX1-NEXT: vpinsrw $1, (%rsp,%rsi,2), %xmm0, %xmm0
; AVX1-NEXT: andl $15, %edx
; AVX1-NEXT: vpinsrw $2, (%rsp,%rdx,2), %xmm0, %xmm0
; AVX1-NEXT: andl $15, %ecx
; AVX1-NEXT: vpinsrw $3, (%rsp,%rcx,2), %xmm0, %xmm0
; AVX1-NEXT: andl $15, %r8d
; AVX1-NEXT: vpinsrw $4, (%rsp,%r8,2), %xmm0, %xmm0
; AVX1-NEXT: andl $15, %r9d
; AVX1-NEXT: vpinsrw $5, (%rsp,%r9,2), %xmm0, %xmm0
; AVX1-NEXT: movl 16(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 24(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $7, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 32(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vmovaps %ymm0, (%rsp)
; AVX1-NEXT: movzwl (%rsp,%rax,2), %eax
; AVX1-NEXT: vmovd %eax, %xmm1
; AVX1-NEXT: vmovd %eax, %xmm0
; AVX1-NEXT: movl 40(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $1, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $1, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 48(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $2, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $2, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 56(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $3, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $3, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 64(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $4, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $4, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 72(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $5, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $5, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 80(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl 88(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $7, (%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: andl $15, %edi
; AVX1-NEXT: movzwl (%rsp,%rdi,2), %eax
; AVX1-NEXT: vmovd %eax, %xmm1
; AVX1-NEXT: andl $15, %esi
; AVX1-NEXT: vpinsrw $1, (%rsp,%rsi,2), %xmm1, %xmm1
; AVX1-NEXT: andl $15, %edx
; AVX1-NEXT: vpinsrw $2, (%rsp,%rdx,2), %xmm1, %xmm1
; AVX1-NEXT: andl $15, %ecx
; AVX1-NEXT: vpinsrw $3, (%rsp,%rcx,2), %xmm1, %xmm1
; AVX1-NEXT: andl $15, %r8d
; AVX1-NEXT: vpinsrw $4, (%rsp,%r8,2), %xmm1, %xmm1
; AVX1-NEXT: andl $15, %r9d
; AVX1-NEXT: vpinsrw $5, (%rsp,%r9,2), %xmm1, %xmm1
; AVX1-NEXT: movl 16(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: movl 24(%rbp), %eax
; AVX1-NEXT: andl $15, %eax
; AVX1-NEXT: vpinsrw $7, (%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
; AVX1-NEXT: movq %rbp, %rsp
; AVX1-NEXT: popq %rbp
; AVX1-NEXT: retq
Expand All @@ -355,52 +355,52 @@ define <16 x i16> @var_shuffle_v16i16_v16i16_xxxxxxxxxxxxxxxx_i16(<16 x i16> %x,
; AVX2-NEXT: # kill: def $edx killed $edx def $rdx
; AVX2-NEXT: # kill: def $esi killed $esi def $rsi
; AVX2-NEXT: # kill: def $edi killed $edi def $rdi
; AVX2-NEXT: andl $15, %edi
; AVX2-NEXT: vmovaps %ymm0, (%rsp)
; AVX2-NEXT: movzwl (%rsp,%rdi,2), %eax
; AVX2-NEXT: vmovd %eax, %xmm0
; AVX2-NEXT: andl $15, %esi
; AVX2-NEXT: vpinsrw $1, (%rsp,%rsi,2), %xmm0, %xmm0
; AVX2-NEXT: andl $15, %edx
; AVX2-NEXT: vpinsrw $2, (%rsp,%rdx,2), %xmm0, %xmm0
; AVX2-NEXT: andl $15, %ecx
; AVX2-NEXT: vpinsrw $3, (%rsp,%rcx,2), %xmm0, %xmm0
; AVX2-NEXT: andl $15, %r8d
; AVX2-NEXT: vpinsrw $4, (%rsp,%r8,2), %xmm0, %xmm0
; AVX2-NEXT: andl $15, %r9d
; AVX2-NEXT: vpinsrw $5, (%rsp,%r9,2), %xmm0, %xmm0
; AVX2-NEXT: movl 16(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 24(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $7, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 32(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vmovaps %ymm0, (%rsp)
; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
; AVX2-NEXT: vmovd %eax, %xmm1
; AVX2-NEXT: vmovd %eax, %xmm0
; AVX2-NEXT: movl 40(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $1, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $1, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 48(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $2, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $2, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 56(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $3, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $3, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 64(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $4, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $4, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 72(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $5, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $5, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 80(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl 88(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $7, (%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: andl $15, %edi
; AVX2-NEXT: movzwl (%rsp,%rdi,2), %eax
; AVX2-NEXT: vmovd %eax, %xmm1
; AVX2-NEXT: andl $15, %esi
; AVX2-NEXT: vpinsrw $1, (%rsp,%rsi,2), %xmm1, %xmm1
; AVX2-NEXT: andl $15, %edx
; AVX2-NEXT: vpinsrw $2, (%rsp,%rdx,2), %xmm1, %xmm1
; AVX2-NEXT: andl $15, %ecx
; AVX2-NEXT: vpinsrw $3, (%rsp,%rcx,2), %xmm1, %xmm1
; AVX2-NEXT: andl $15, %r8d
; AVX2-NEXT: vpinsrw $4, (%rsp,%r8,2), %xmm1, %xmm1
; AVX2-NEXT: andl $15, %r9d
; AVX2-NEXT: vpinsrw $5, (%rsp,%r9,2), %xmm1, %xmm1
; AVX2-NEXT: movl 16(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $6, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: movl 24(%rbp), %eax
; AVX2-NEXT: andl $15, %eax
; AVX2-NEXT: vpinsrw $7, (%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0
; AVX2-NEXT: movq %rbp, %rsp
; AVX2-NEXT: popq %rbp
; AVX2-NEXT: retq
Expand Down Expand Up @@ -448,52 +448,52 @@ define <16 x i16> @var_shuffle_v16i16_v8i16_xxxxxxxxxxxxxxxx_i16(<8 x i16> %x, i
; AVX1-NEXT: # kill: def $edx killed $edx def $rdx
; AVX1-NEXT: # kill: def $esi killed $esi def $rsi
; AVX1-NEXT: # kill: def $edi killed $edi def $rdi
; AVX1-NEXT: andl $7, %edi
; AVX1-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
; AVX1-NEXT: movzwl -24(%rsp,%rdi,2), %eax
; AVX1-NEXT: vmovd %eax, %xmm0
; AVX1-NEXT: andl $7, %esi
; AVX1-NEXT: vpinsrw $1, -24(%rsp,%rsi,2), %xmm0, %xmm0
; AVX1-NEXT: andl $7, %edx
; AVX1-NEXT: vpinsrw $2, -24(%rsp,%rdx,2), %xmm0, %xmm0
; AVX1-NEXT: andl $7, %ecx
; AVX1-NEXT: vpinsrw $3, -24(%rsp,%rcx,2), %xmm0, %xmm0
; AVX1-NEXT: andl $7, %r8d
; AVX1-NEXT: vpinsrw $4, -24(%rsp,%r8,2), %xmm0, %xmm0
; AVX1-NEXT: andl $7, %r9d
; AVX1-NEXT: vpinsrw $5, -24(%rsp,%r9,2), %xmm0, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $6, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
; AVX1-NEXT: movzwl -24(%rsp,%rax,2), %eax
; AVX1-NEXT: vmovd %eax, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $7, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: vpinsrw $1, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: movzwl -24(%rsp,%rax,2), %eax
; AVX1-NEXT: vmovd %eax, %xmm1
; AVX1-NEXT: vpinsrw $2, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $1, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $3, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $2, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $4, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $3, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $5, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $4, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $6, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $5, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vpinsrw $7, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX1-NEXT: andl $7, %edi
; AVX1-NEXT: movzwl -24(%rsp,%rdi,2), %eax
; AVX1-NEXT: vmovd %eax, %xmm1
; AVX1-NEXT: andl $7, %esi
; AVX1-NEXT: vpinsrw $1, -24(%rsp,%rsi,2), %xmm1, %xmm1
; AVX1-NEXT: andl $7, %edx
; AVX1-NEXT: vpinsrw $2, -24(%rsp,%rdx,2), %xmm1, %xmm1
; AVX1-NEXT: andl $7, %ecx
; AVX1-NEXT: vpinsrw $3, -24(%rsp,%rcx,2), %xmm1, %xmm1
; AVX1-NEXT: andl $7, %r8d
; AVX1-NEXT: vpinsrw $4, -24(%rsp,%r8,2), %xmm1, %xmm1
; AVX1-NEXT: andl $7, %r9d
; AVX1-NEXT: vpinsrw $5, -24(%rsp,%r9,2), %xmm1, %xmm1
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $6, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX1-NEXT: andl $7, %eax
; AVX1-NEXT: vpinsrw $7, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
; AVX1-NEXT: retq
;
; AVX2-LABEL: var_shuffle_v16i16_v8i16_xxxxxxxxxxxxxxxx_i16:
Expand All @@ -504,52 +504,52 @@ define <16 x i16> @var_shuffle_v16i16_v8i16_xxxxxxxxxxxxxxxx_i16(<8 x i16> %x, i
; AVX2-NEXT: # kill: def $edx killed $edx def $rdx
; AVX2-NEXT: # kill: def $esi killed $esi def $rsi
; AVX2-NEXT: # kill: def $edi killed $edi def $rdi
; AVX2-NEXT: andl $7, %edi
; AVX2-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
; AVX2-NEXT: movzwl -24(%rsp,%rdi,2), %eax
; AVX2-NEXT: vmovd %eax, %xmm0
; AVX2-NEXT: andl $7, %esi
; AVX2-NEXT: vpinsrw $1, -24(%rsp,%rsi,2), %xmm0, %xmm0
; AVX2-NEXT: andl $7, %edx
; AVX2-NEXT: vpinsrw $2, -24(%rsp,%rdx,2), %xmm0, %xmm0
; AVX2-NEXT: andl $7, %ecx
; AVX2-NEXT: vpinsrw $3, -24(%rsp,%rcx,2), %xmm0, %xmm0
; AVX2-NEXT: andl $7, %r8d
; AVX2-NEXT: vpinsrw $4, -24(%rsp,%r8,2), %xmm0, %xmm0
; AVX2-NEXT: andl $7, %r9d
; AVX2-NEXT: vpinsrw $5, -24(%rsp,%r9,2), %xmm0, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $6, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
; AVX2-NEXT: vmovd %eax, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $7, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: vpinsrw $1, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
; AVX2-NEXT: vmovd %eax, %xmm1
; AVX2-NEXT: vpinsrw $2, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $1, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $3, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $2, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $4, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $3, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $5, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $4, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $6, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $5, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vpinsrw $7, -24(%rsp,%rax,2), %xmm0, %xmm0
; AVX2-NEXT: andl $7, %edi
; AVX2-NEXT: movzwl -24(%rsp,%rdi,2), %eax
; AVX2-NEXT: vmovd %eax, %xmm1
; AVX2-NEXT: andl $7, %esi
; AVX2-NEXT: vpinsrw $1, -24(%rsp,%rsi,2), %xmm1, %xmm1
; AVX2-NEXT: andl $7, %edx
; AVX2-NEXT: vpinsrw $2, -24(%rsp,%rdx,2), %xmm1, %xmm1
; AVX2-NEXT: andl $7, %ecx
; AVX2-NEXT: vpinsrw $3, -24(%rsp,%rcx,2), %xmm1, %xmm1
; AVX2-NEXT: andl $7, %r8d
; AVX2-NEXT: vpinsrw $4, -24(%rsp,%r8,2), %xmm1, %xmm1
; AVX2-NEXT: andl $7, %r9d
; AVX2-NEXT: vpinsrw $5, -24(%rsp,%r9,2), %xmm1, %xmm1
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $6, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %eax
; AVX2-NEXT: andl $7, %eax
; AVX2-NEXT: vpinsrw $7, -24(%rsp,%rax,2), %xmm1, %xmm1
; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0
; AVX2-NEXT: retq
%x0 = extractelement <8 x i16> %x, i32 %i0
%x1 = extractelement <8 x i16> %x, i32 %i1
Expand Down Expand Up @@ -597,13 +597,13 @@ define <4 x i64> @mem_shuffle_v4i64_v4i64_xxxx_i64(<4 x i64> %x, ptr %i) nounwin
; ALL-NEXT: movq %rsp, %rbp
; ALL-NEXT: andq $-32, %rsp
; ALL-NEXT: subq $64, %rsp
; ALL-NEXT: movq (%rdi), %rax
; ALL-NEXT: movq 8(%rdi), %rcx
; ALL-NEXT: movl (%rdi), %eax
; ALL-NEXT: movl 8(%rdi), %ecx
; ALL-NEXT: andl $3, %eax
; ALL-NEXT: andl $3, %ecx
; ALL-NEXT: movq 16(%rdi), %rdx
; ALL-NEXT: movl 16(%rdi), %edx
; ALL-NEXT: andl $3, %edx
; ALL-NEXT: movq 24(%rdi), %rsi
; ALL-NEXT: movl 24(%rdi), %esi
; ALL-NEXT: andl $3, %esi
; ALL-NEXT: vmovaps %ymm0, (%rsp)
; ALL-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
Expand Down Expand Up @@ -637,13 +637,13 @@ define <4 x i64> @mem_shuffle_v4i64_v4i64_xxxx_i64(<4 x i64> %x, ptr %i) nounwin
define <4 x i64> @mem_shuffle_v4i64_v2i64_xxxx_i64(<2 x i64> %x, ptr %i) nounwind {
; ALL-LABEL: mem_shuffle_v4i64_v2i64_xxxx_i64:
; ALL: # %bb.0:
; ALL-NEXT: movq (%rdi), %rax
; ALL-NEXT: movq 8(%rdi), %rcx
; ALL-NEXT: movl (%rdi), %eax
; ALL-NEXT: movl 8(%rdi), %ecx
; ALL-NEXT: andl $1, %eax
; ALL-NEXT: andl $1, %ecx
; ALL-NEXT: movq 16(%rdi), %rdx
; ALL-NEXT: movl 16(%rdi), %edx
; ALL-NEXT: andl $1, %edx
; ALL-NEXT: movq 24(%rdi), %rsi
; ALL-NEXT: movl 24(%rdi), %esi
; ALL-NEXT: andl $1, %esi
; ALL-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
; ALL-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
Expand Down
8 changes: 4 additions & 4 deletions llvm/test/CodeGen/X86/vselect.ll
Original file line number Diff line number Diff line change
Expand Up @@ -651,18 +651,18 @@ define i64 @vselect_any_extend_vector_inreg_crash(ptr %x) {
; SSE: # %bb.0:
; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
; SSE-NEXT: pcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
; SSE-NEXT: movq %xmm0, %rax
; SSE-NEXT: movd %xmm0, %eax
; SSE-NEXT: andl $1, %eax
; SSE-NEXT: shlq $15, %rax
; SSE-NEXT: shll $15, %eax
; SSE-NEXT: retq
;
; AVX-LABEL: vselect_any_extend_vector_inreg_crash:
; AVX: # %bb.0:
; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
; AVX-NEXT: vpcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
; AVX-NEXT: vmovq %xmm0, %rax
; AVX-NEXT: vmovd %xmm0, %eax
; AVX-NEXT: andl $1, %eax
; AVX-NEXT: shlq $15, %rax
; AVX-NEXT: shll $15, %eax
; AVX-NEXT: retq
0:
%1 = load <8 x i8>, ptr %x
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/X86/zext-logicop-shift-load.ll
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ define i64 @test1(ptr %data) {
;
; X64-LABEL: test1:
; X64: # %bb.0: # %entry
; X64-NEXT: movl (%rdi), %eax
; X64-NEXT: movzbl (%rdi), %eax
; X64-NEXT: shll $2, %eax
; X64-NEXT: andl $60, %eax
; X64-NEXT: retq
Expand All @@ -37,7 +37,7 @@ define ptr @test2(ptr %data) {
;
; X64-LABEL: test2:
; X64: # %bb.0: # %entry
; X64-NEXT: movl (%rdi), %eax
; X64-NEXT: movzbl (%rdi), %eax
; X64-NEXT: andl $15, %eax
; X64-NEXT: leaq (%rdi,%rax,4), %rax
; X64-NEXT: retq
Expand Down
6 changes: 3 additions & 3 deletions llvm/test/CodeGen/X86/zext-shl.ll
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ define i64 @i64_zext_shift_i16_zext_i8(i8 %a0) nounwind {
; X64-LABEL: i64_zext_shift_i16_zext_i8:
; X64: # %bb.0:
; X64-NEXT: movzbl %dil, %eax
; X64-NEXT: shlq $5, %rax
; X64-NEXT: shll $5, %eax
; X64-NEXT: retq
%t0 = zext i8 %a0 to i16
%t1 = shl i16 %t0, 5
Expand Down Expand Up @@ -112,7 +112,7 @@ define i128 @i128_zext_shift_i64_zext_i8(i8 %a0) nounwind {
; X64-LABEL: i128_zext_shift_i64_zext_i8:
; X64: # %bb.0:
; X64-NEXT: movzbl %dil, %eax
; X64-NEXT: shlq $4, %rax
; X64-NEXT: shll $4, %eax
; X64-NEXT: xorl %edx, %edx
; X64-NEXT: retq
%t0 = zext i8 %a0 to i64
Expand All @@ -136,7 +136,7 @@ define i128 @i128_zext_shift_i64_zext_i16(i16 %a0) nounwind {
; X64-LABEL: i128_zext_shift_i64_zext_i16:
; X64: # %bb.0:
; X64-NEXT: movzwl %di, %eax
; X64-NEXT: shlq $7, %rax
; X64-NEXT: shll $7, %eax
; X64-NEXT: xorl %edx, %edx
; X64-NEXT: retq
%t0 = zext i16 %a0 to i64
Expand Down