@@ -11,25 +11,22 @@ define i256 @select_and(i256 %a0, i256 %a1, i256 %a2, i256 %a3, i256 %a4, i256 %
1111; CHECK-NEXT: SWAP3
1212; CHECK-NEXT: SWAP1
1313; CHECK-NEXT: SWAP2
14+ ; CHECK-NEXT: SWAP5
15+ ; CHECK-NEXT: SWAP4
16+ ; CHECK-NEXT: SWAP5
1417; CHECK-NEXT: LT
1518; CHECK-NEXT: SWAP2
1619; CHECK-NEXT: LT
1720; CHECK-NEXT: AND
18- ; CHECK-NEXT: ISZERO
19- ; CHECK-NEXT: PUSH4 @.BB0_2
20- ; CHECK-NEXT: JUMPI
21- ; CHECK-NEXT: ; %bb.1:
22- ; CHECK-NEXT: SWAP2
2321; CHECK-NEXT: SWAP1
24- ; CHECK-NEXT: POP
25- ; CHECK-NEXT: PUSH4 @.BB0_3
26- ; CHECK-NEXT: JUMP
27- ; CHECK-NEXT: .BB0_2:
28- ; CHECK-NEXT: JUMPDEST
29- ; CHECK-NEXT: POP
22+ ; CHECK-NEXT: DUP2
23+ ; CHECK-NEXT: PUSH1 0x1
24+ ; CHECK-NEXT: SUB
25+ ; CHECK-NEXT: MUL
26+ ; CHECK-NEXT: SWAP2
27+ ; CHECK-NEXT: MUL
28+ ; CHECK-NEXT: ADD
3029; CHECK-NEXT: SWAP1
31- ; CHECK-NEXT: .BB0_3:
32- ; CHECK-NEXT: JUMPDEST
3330; CHECK-NEXT: JUMP
3431 %cmp1 = icmp ult i256 %a0 , %a1
3532 %cmp2 = icmp ult i256 %a2 , %a3
@@ -45,25 +42,22 @@ define i256 @select_or(i256 %a0, i256 %a1, i256 %a2, i256 %a3, i256 %a4, i256 %a
4542; CHECK-NEXT: SWAP3
4643; CHECK-NEXT: SWAP1
4744; CHECK-NEXT: SWAP2
45+ ; CHECK-NEXT: SWAP5
46+ ; CHECK-NEXT: SWAP4
47+ ; CHECK-NEXT: SWAP5
4848; CHECK-NEXT: LT
4949; CHECK-NEXT: SWAP2
5050; CHECK-NEXT: LT
5151; CHECK-NEXT: OR
52- ; CHECK-NEXT: ISZERO
53- ; CHECK-NEXT: PUSH4 @.BB1_2
54- ; CHECK-NEXT: JUMPI
55- ; CHECK-NEXT: ; %bb.1:
56- ; CHECK-NEXT: SWAP2
5752; CHECK-NEXT: SWAP1
58- ; CHECK-NEXT: POP
59- ; CHECK-NEXT: PUSH4 @.BB1_3
60- ; CHECK-NEXT: JUMP
61- ; CHECK-NEXT: .BB1_2:
62- ; CHECK-NEXT: JUMPDEST
63- ; CHECK-NEXT: POP
53+ ; CHECK-NEXT: DUP2
54+ ; CHECK-NEXT: PUSH1 0x1
55+ ; CHECK-NEXT: SUB
56+ ; CHECK-NEXT: MUL
57+ ; CHECK-NEXT: SWAP2
58+ ; CHECK-NEXT: MUL
59+ ; CHECK-NEXT: ADD
6460; CHECK-NEXT: SWAP1
65- ; CHECK-NEXT: .BB1_3:
66- ; CHECK-NEXT: JUMPDEST
6761; CHECK-NEXT: JUMP
6862 %cmp1 = icmp ult i256 %a0 , %a1
6963 %cmp2 = icmp ult i256 %a2 , %a3
@@ -78,23 +72,20 @@ define i256 @select_select_to_and(i1 %cond1, i1 %cond2, i256 %a, i256 %b) {
7872; CHECK-NEXT: JUMPDEST
7973; CHECK-NEXT: PUSH1 0x1
8074; CHECK-NEXT: SWAP2
75+ ; CHECK-NEXT: SWAP4
76+ ; CHECK-NEXT: SWAP3
77+ ; CHECK-NEXT: SWAP4
8178; CHECK-NEXT: AND
8279; CHECK-NEXT: AND
83- ; CHECK-NEXT: ISZERO
84- ; CHECK-NEXT: PUSH4 @.BB2_2
85- ; CHECK-NEXT: JUMPI
86- ; CHECK-NEXT: ; %bb.1:
87- ; CHECK-NEXT: SWAP2
8880; CHECK-NEXT: SWAP1
89- ; CHECK-NEXT: POP
90- ; CHECK-NEXT: PUSH4 @.BB2_3
91- ; CHECK-NEXT: JUMP
92- ; CHECK-NEXT: .BB2_2:
93- ; CHECK-NEXT: JUMPDEST
94- ; CHECK-NEXT: POP
81+ ; CHECK-NEXT: PUSH1 0x1
82+ ; CHECK-NEXT: DUP3
83+ ; CHECK-NEXT: XOR
84+ ; CHECK-NEXT: MUL
85+ ; CHECK-NEXT: SWAP2
86+ ; CHECK-NEXT: MUL
87+ ; CHECK-NEXT: ADD
9588; CHECK-NEXT: SWAP1
96- ; CHECK-NEXT: .BB2_3:
97- ; CHECK-NEXT: JUMPDEST
9889; CHECK-NEXT: JUMP
9990 %select1 = select i1 %cond1 , i256 %a , i256 %b
10091 %select2 = select i1 %cond2 , i256 %select1 , i256 %b
@@ -107,23 +98,20 @@ define i256 @select_select_to_or(i1 %cond1, i1 %cond2, i256 %a, i256 %b) {
10798; CHECK-NEXT: JUMPDEST
10899; CHECK-NEXT: PUSH1 0x1
109100; CHECK-NEXT: SWAP2
101+ ; CHECK-NEXT: SWAP4
102+ ; CHECK-NEXT: SWAP3
103+ ; CHECK-NEXT: SWAP4
110104; CHECK-NEXT: OR
111105; CHECK-NEXT: AND
112- ; CHECK-NEXT: ISZERO
113- ; CHECK-NEXT: PUSH4 @.BB3_2
114- ; CHECK-NEXT: JUMPI
115- ; CHECK-NEXT: ; %bb.1:
116- ; CHECK-NEXT: SWAP2
117106; CHECK-NEXT: SWAP1
118- ; CHECK-NEXT: POP
119- ; CHECK-NEXT: PUSH4 @.BB3_3
120- ; CHECK-NEXT: JUMP
121- ; CHECK-NEXT: .BB3_2:
122- ; CHECK-NEXT: JUMPDEST
123- ; CHECK-NEXT: POP
107+ ; CHECK-NEXT: PUSH1 0x1
108+ ; CHECK-NEXT: DUP3
109+ ; CHECK-NEXT: XOR
110+ ; CHECK-NEXT: MUL
111+ ; CHECK-NEXT: SWAP2
112+ ; CHECK-NEXT: MUL
113+ ; CHECK-NEXT: ADD
124114; CHECK-NEXT: SWAP1
125- ; CHECK-NEXT: .BB3_3:
126- ; CHECK-NEXT: JUMPDEST
127115; CHECK-NEXT: JUMP
128116 %select1 = select i1 %cond1 , i256 %a , i256 %b
129117 %select2 = select i1 %cond2 , i256 %a , i256 %select1
0 commit comments