Skip to content

Commit 499b76d

Browse files
[EVM][DAGCombine] Add pre-commit test for Expand SELECT of constant to arithmetic
Signed-off-by: Vladimir Radosavljevic <[email protected]>
1 parent d05c6db commit 499b76d

File tree

1 file changed

+180
-0
lines changed

1 file changed

+180
-0
lines changed

llvm/test/CodeGen/EVM/select-const.ll

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,3 +301,183 @@ define i256 @select_ne_10001_10002(i256 %a, i256 %b) {
301301
%2 = select i1 %1, i256 10001, i256 10002
302302
ret i256 %2
303303
}
304+
305+
define i256 @select_196_184(i1 %a) {
306+
; CHECK-LABEL: select_196_184:
307+
; CHECK: ; %bb.0:
308+
; CHECK-NEXT: JUMPDEST
309+
; CHECK-NEXT: PUSH1 0x1
310+
; CHECK-NEXT: AND
311+
; CHECK-NEXT: ISZERO
312+
; CHECK-NEXT: PUSH4 @.BB20_2
313+
; CHECK-NEXT: JUMPI
314+
; CHECK-NEXT: ; %bb.1:
315+
; CHECK-NEXT: PUSH1 0xC4
316+
; CHECK-NEXT: PUSH4 @.BB20_3
317+
; CHECK-NEXT: JUMP
318+
; CHECK-NEXT: .BB20_2:
319+
; CHECK-NEXT: JUMPDEST
320+
; CHECK-NEXT: PUSH1 0xB8
321+
; CHECK-NEXT: .BB20_3:
322+
; CHECK-NEXT: JUMPDEST
323+
; CHECK-NEXT: SWAP1
324+
; CHECK-NEXT: JUMP
325+
%1 = select i1 %a, i256 196, i256 184
326+
ret i256 %1
327+
}
328+
329+
define i256 @select_184_196(i1 %a) {
330+
; CHECK-LABEL: select_184_196:
331+
; CHECK: ; %bb.0:
332+
; CHECK-NEXT: JUMPDEST
333+
; CHECK-NEXT: PUSH1 0x1
334+
; CHECK-NEXT: AND
335+
; CHECK-NEXT: ISZERO
336+
; CHECK-NEXT: PUSH4 @.BB21_2
337+
; CHECK-NEXT: JUMPI
338+
; CHECK-NEXT: ; %bb.1:
339+
; CHECK-NEXT: PUSH1 0xB8
340+
; CHECK-NEXT: PUSH4 @.BB21_3
341+
; CHECK-NEXT: JUMP
342+
; CHECK-NEXT: .BB21_2:
343+
; CHECK-NEXT: JUMPDEST
344+
; CHECK-NEXT: PUSH1 0xC4
345+
; CHECK-NEXT: .BB21_3:
346+
; CHECK-NEXT: JUMPDEST
347+
; CHECK-NEXT: SWAP1
348+
; CHECK-NEXT: JUMP
349+
%1 = select i1 %a, i256 184, i256 196
350+
ret i256 %1
351+
}
352+
353+
define i256 @select_n196_n184(i1 %a) {
354+
; CHECK-LABEL: select_n196_n184:
355+
; CHECK: ; %bb.0:
356+
; CHECK-NEXT: JUMPDEST
357+
; CHECK-NEXT: PUSH1 0x1
358+
; CHECK-NEXT: AND
359+
; CHECK-NEXT: ISZERO
360+
; CHECK-NEXT: PUSH4 @.BB22_2
361+
; CHECK-NEXT: JUMPI
362+
; CHECK-NEXT: ; %bb.1:
363+
; CHECK-NEXT: PUSH1 0xC3
364+
; CHECK-NEXT: NOT
365+
; CHECK-NEXT: PUSH4 @.BB22_3
366+
; CHECK-NEXT: JUMP
367+
; CHECK-NEXT: .BB22_2:
368+
; CHECK-NEXT: JUMPDEST
369+
; CHECK-NEXT: PUSH1 0xB7
370+
; CHECK-NEXT: NOT
371+
; CHECK-NEXT: .BB22_3:
372+
; CHECK-NEXT: JUMPDEST
373+
; CHECK-NEXT: SWAP1
374+
; CHECK-NEXT: JUMP
375+
%1 = select i1 %a, i256 -196, i256 -184
376+
ret i256 %1
377+
}
378+
379+
define i256 @select_n184_n196(i1 %a) {
380+
; CHECK-LABEL: select_n184_n196:
381+
; CHECK: ; %bb.0:
382+
; CHECK-NEXT: JUMPDEST
383+
; CHECK-NEXT: PUSH1 0x1
384+
; CHECK-NEXT: AND
385+
; CHECK-NEXT: ISZERO
386+
; CHECK-NEXT: PUSH4 @.BB23_2
387+
; CHECK-NEXT: JUMPI
388+
; CHECK-NEXT: ; %bb.1:
389+
; CHECK-NEXT: PUSH1 0xB7
390+
; CHECK-NEXT: NOT
391+
; CHECK-NEXT: PUSH4 @.BB23_3
392+
; CHECK-NEXT: JUMP
393+
; CHECK-NEXT: .BB23_2:
394+
; CHECK-NEXT: JUMPDEST
395+
; CHECK-NEXT: PUSH1 0xC3
396+
; CHECK-NEXT: NOT
397+
; CHECK-NEXT: .BB23_3:
398+
; CHECK-NEXT: JUMPDEST
399+
; CHECK-NEXT: SWAP1
400+
; CHECK-NEXT: JUMP
401+
%1 = select i1 %a, i256 -184, i256 -196
402+
ret i256 %1
403+
}
404+
405+
define i256 @select_var_12345(i1 %a, i256 %b) {
406+
; CHECK-LABEL: select_var_12345:
407+
; CHECK: ; %bb.0:
408+
; CHECK-NEXT: JUMPDEST
409+
; CHECK-NEXT: PUSH1 0x1
410+
; CHECK-NEXT: AND
411+
; CHECK-NEXT: PUSH4 @.BB24_2
412+
; CHECK-NEXT: JUMPI
413+
; CHECK-NEXT: ; %bb.1:
414+
; CHECK-NEXT: POP
415+
; CHECK-NEXT: PUSH2 0x3039
416+
; CHECK-NEXT: .BB24_2:
417+
; CHECK-NEXT: JUMPDEST
418+
; CHECK-NEXT: SWAP1
419+
; CHECK-NEXT: JUMP
420+
%1 = select i1 %a, i256 %b, i256 12345
421+
ret i256 %1
422+
}
423+
424+
define i256 @select_12345_var(i1 %a, i256 %b) {
425+
; CHECK-LABEL: select_12345_var:
426+
; CHECK: ; %bb.0:
427+
; CHECK-NEXT: JUMPDEST
428+
; CHECK-NEXT: PUSH1 0x1
429+
; CHECK-NEXT: AND
430+
; CHECK-NEXT: ISZERO
431+
; CHECK-NEXT: PUSH4 @.BB25_2
432+
; CHECK-NEXT: JUMPI
433+
; CHECK-NEXT: ; %bb.1:
434+
; CHECK-NEXT: POP
435+
; CHECK-NEXT: PUSH2 0x3039
436+
; CHECK-NEXT: .BB25_2:
437+
; CHECK-NEXT: JUMPDEST
438+
; CHECK-NEXT: SWAP1
439+
; CHECK-NEXT: JUMP
440+
%1 = select i1 %a, i256 12345, i256 %b
441+
ret i256 %1
442+
}
443+
444+
define i256 @select_var_n12345(i1 %a, i256 %b) {
445+
; CHECK-LABEL: select_var_n12345:
446+
; CHECK: ; %bb.0:
447+
; CHECK-NEXT: JUMPDEST
448+
; CHECK-NEXT: PUSH1 0x1
449+
; CHECK-NEXT: AND
450+
; CHECK-NEXT: PUSH4 @.BB26_2
451+
; CHECK-NEXT: JUMPI
452+
; CHECK-NEXT: ; %bb.1:
453+
; CHECK-NEXT: POP
454+
; CHECK-NEXT: PUSH2 0x3038
455+
; CHECK-NEXT: NOT
456+
; CHECK-NEXT: .BB26_2:
457+
; CHECK-NEXT: JUMPDEST
458+
; CHECK-NEXT: SWAP1
459+
; CHECK-NEXT: JUMP
460+
%1 = select i1 %a, i256 %b, i256 -12345
461+
ret i256 %1
462+
}
463+
464+
define i256 @select_n12345_var(i1 %a, i256 %b) {
465+
; CHECK-LABEL: select_n12345_var:
466+
; CHECK: ; %bb.0:
467+
; CHECK-NEXT: JUMPDEST
468+
; CHECK-NEXT: PUSH1 0x1
469+
; CHECK-NEXT: AND
470+
; CHECK-NEXT: ISZERO
471+
; CHECK-NEXT: PUSH4 @.BB27_2
472+
; CHECK-NEXT: JUMPI
473+
; CHECK-NEXT: ; %bb.1:
474+
; CHECK-NEXT: POP
475+
; CHECK-NEXT: PUSH2 0x3038
476+
; CHECK-NEXT: NOT
477+
; CHECK-NEXT: .BB27_2:
478+
; CHECK-NEXT: JUMPDEST
479+
; CHECK-NEXT: SWAP1
480+
; CHECK-NEXT: JUMP
481+
%1 = select i1 %a, i256 -12345, i256 %b
482+
ret i256 %1
483+
}

0 commit comments

Comments
 (0)