@@ -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