Skip to content

Commit 2970a35

Browse files
Changes with a higher instruction count
1 parent 3a1b38c commit 2970a35

File tree

4 files changed

+49
-30
lines changed

4 files changed

+49
-30
lines changed

llvm/test/CodeGen/X86/bitselect.ll

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22
; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefixes=X86
3-
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=-bmi | FileCheck %s --check-prefixes=X64,X64-NOBMI
4-
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+bmi | FileCheck %s --check-prefixes=X64,X64-BMI
3+
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=-bmi | FileCheck %s --check-prefixes=X64-NOBMI
4+
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+bmi | FileCheck %s --check-prefixes=X64-BMI
55

66
; PR46472
77
; bitselect(a,b,m) == or(and(a,not(m)),and(b,m))
@@ -17,14 +17,24 @@ define i8 @bitselect_i8(i8 %a, i8 %b, i8 %m) nounwind {
1717
; X86-NEXT: xorb %cl, %al
1818
; X86-NEXT: retl
1919
;
20-
; X64-LABEL: bitselect_i8:
21-
; X64: # %bb.0:
22-
; X64-NEXT: andl %edx, %esi
23-
; X64-NEXT: movl %edx, %eax
24-
; X64-NEXT: notb %al
25-
; X64-NEXT: andb %dil, %al
26-
; X64-NEXT: orb %sil, %al
27-
; X64-NEXT: retq
20+
; X64-NOBMI-LABEL: bitselect_i8:
21+
; X64-NOBMI: # %bb.0:
22+
; X64-NOBMI-NEXT: movl %esi, %eax
23+
; X64-NOBMI-NEXT: xorb %dil, %al
24+
; X64-NOBMI-NEXT: andb %dl, %al
25+
; X64-NOBMI-NEXT: xorb %dil, %al
26+
; X64-NOBMI-NEXT: # kill: def $al killed $al killed $eax
27+
; X64-NOBMI-NEXT: retq
28+
;
29+
; X64-BMI-LABEL: bitselect_i8:
30+
; X64-BMI: # %bb.0:
31+
; X64-BMI-NEXT: movl %edx, %eax
32+
; X64-BMI-NEXT: andb %al, %sil
33+
; X64-BMI-NEXT: notb %al
34+
; X64-BMI-NEXT: andb %dil, %al
35+
; X64-BMI-NEXT: orb %sil, %al
36+
; X64-BMI-NEXT: # kill: def $al killed $al killed $eax
37+
; X64-BMI-NEXT: retq
2838
%not = xor i8 %m, -1
2939
%ma = and i8 %a, %not
3040
%mb = and i8 %b, %m

llvm/test/CodeGen/X86/bool-math.ll

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -262,19 +262,20 @@ define i8 @low_bit_select_constants_bigger_true_narrower_result(i16 %x) {
262262
define i1 @opaque_constant(i48 %x, i48 %y) {
263263
; X64-LABEL: opaque_constant:
264264
; X64: # %bb.0:
265-
; X64-NEXT: movq %rdi, %rax
266-
; X64-NEXT: xorq %rsi, %rax
265+
; X64-NEXT: movq %rsi, %rax
266+
; X64-NEXT: shrq $32, %rdi
267267
; X64-NEXT: shrq $32, %rax
268-
; X64-NEXT: andl $1, %eax
268+
; X64-NEXT: xorb %dil, %al
269+
; X64-NEXT: andb $1, %al
269270
; X64-NEXT: # kill: def $al killed $al killed $rax
270271
; X64-NEXT: retq
271272
;
272273
; X32-LABEL: opaque_constant:
273274
; X32: # %bb.0:
274-
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
275-
; X32-NEXT: xorl {{[0-9]+}}(%esp), %eax
276-
; X32-NEXT: andl $1, %eax
277-
; X32-NEXT: # kill: def $al killed $al killed $eax
275+
; X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
276+
; X32-NEXT: movl $1, %ecx
277+
; X32-NEXT: xorb {{[0-9]+}}(%esp), %al
278+
; X32-NEXT: andb %cl, %al
278279
; X32-NEXT: retl
279280
%andx = and i48 %x, 4294967296
280281
%andy = and i48 %y, 4294967296

llvm/test/CodeGen/X86/subcarry.ll

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,16 @@ define %S @negate(ptr nocapture readonly %this) {
4646
; CHECK-NEXT: subq (%rsi), %rdx
4747
; CHECK-NEXT: movl $0, %edi
4848
; CHECK-NEXT: sbbq 8(%rsi), %rdi
49-
; CHECK-NEXT: movl $0, %r8d
50-
; CHECK-NEXT: sbbq 16(%rsi), %r8
51-
; CHECK-NEXT: sbbq 24(%rsi), %rcx
49+
; CHECK-NEXT: sbbq 16(%rsi), %rcx
50+
; CHECK-NEXT: setae %r8b
51+
; CHECK-NEXT: movzbl %r8b, %r8d
52+
; CHECK-NEXT: movq 24(%rsi), %rsi
53+
; CHECK-NEXT: notq %rsi
54+
; CHECK-NEXT: addq %r8, %rsi
5255
; CHECK-NEXT: movq %rdx, (%rax)
5356
; CHECK-NEXT: movq %rdi, 8(%rax)
54-
; CHECK-NEXT: movq %r8, 16(%rax)
55-
; CHECK-NEXT: movq %rcx, 24(%rax)
57+
; CHECK-NEXT: movq %rcx, 16(%rax)
58+
; CHECK-NEXT: movq %rsi, 24(%rax)
5659
; CHECK-NEXT: retq
5760
entry:
5861
%0 = load i64, ptr %this, align 8
@@ -108,13 +111,13 @@ define %S @sub(ptr nocapture readonly %this, %S %arg.b) {
108111
; CHECK-NEXT: movzbl %r10b, %r10d
109112
; CHECK-NEXT: notq %r8
110113
; CHECK-NEXT: addq %rdx, %r8
111-
; CHECK-NEXT: adcq 24(%rsi), %r10
112114
; CHECK-NEXT: notq %r9
113-
; CHECK-NEXT: addq %r10, %r9
115+
; CHECK-NEXT: adcq 24(%rsi), %r10
116+
; CHECK-NEXT: addq %r9, %r10
114117
; CHECK-NEXT: movq %rdi, (%rax)
115118
; CHECK-NEXT: movq %rcx, 8(%rax)
116119
; CHECK-NEXT: movq %r8, 16(%rax)
117-
; CHECK-NEXT: movq %r9, 24(%rax)
120+
; CHECK-NEXT: movq %r10, 24(%rax)
118121
; CHECK-NEXT: retq
119122
entry:
120123
%0 = extractvalue %S %arg.b, 0

llvm/test/CodeGen/X86/xor-icmp.ll

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,16 @@ define i32 @t(i32 %a, i32 %b) nounwind ssp {
1515
;
1616
; X64-LABEL: t:
1717
; X64: # %bb.0: # %entry
18-
; X64-NEXT: xorl %esi, %edi
18+
; X64-NEXT: shrl $14, %edi
19+
; X64-NEXT: andb $1, %dil
20+
; X64-NEXT: btl $14, %esi
21+
; X64-NEXT: sbbb $0, %dil
22+
; X64-NEXT: je .LBB0_1
23+
; X64-NEXT: # %bb.2: # %bb1
24+
; X64-NEXT: xorl %eax, %eax
25+
; X64-NEXT: jmp bar # TAILCALL
26+
; X64-NEXT: .LBB0_1: # %bb
1927
; X64-NEXT: xorl %eax, %eax
20-
; X64-NEXT: testl $16384, %edi # imm = 0x4000
21-
; X64-NEXT: jne bar # TAILCALL
22-
; X64-NEXT: # %bb.1: # %bb
2328
; X64-NEXT: jmp foo # TAILCALL
2429
entry:
2530
%0 = and i32 %a, 16384
@@ -96,7 +101,7 @@ define i1 @xor_not_bools(i1 zeroext %x, i1 zeroext %y) nounwind {
96101
; X64-LABEL: xor_not_bools:
97102
; X64: # %bb.0:
98103
; X64-NEXT: movl %edi, %eax
99-
; X64-NEXT: xorl %esi, %eax
104+
; X64-NEXT: xorb %sil, %al
100105
; X64-NEXT: xorb $1, %al
101106
; X64-NEXT: # kill: def $al killed $al killed $eax
102107
; X64-NEXT: retq

0 commit comments

Comments
 (0)