@@ -48,20 +48,13 @@ define i256 @select_const_int_harder(i1 %a) {
48
48
; CHECK-LABEL: select_const_int_harder:
49
49
; CHECK: ; %bb.0:
50
50
; CHECK-NEXT: JUMPDEST
51
+ ; CHECK-NEXT: PUSH1 0x26
52
+ ; CHECK-NEXT: SWAP1
51
53
; CHECK-NEXT: PUSH1 0x1
52
54
; CHECK-NEXT: AND
53
- ; CHECK-NEXT: ISZERO
54
- ; CHECK-NEXT: PUSH4 @.BB3_2
55
- ; CHECK-NEXT: JUMPI
56
- ; CHECK-NEXT: ; %bb.1:
57
- ; CHECK-NEXT: PUSH1 0x6
58
- ; CHECK-NEXT: PUSH4 @.BB3_3
59
- ; CHECK-NEXT: JUMP
60
- ; CHECK-NEXT: .BB3_2:
61
- ; CHECK-NEXT: JUMPDEST
62
- ; CHECK-NEXT: PUSH1 0x26
63
- ; CHECK-NEXT: .BB3_3:
64
- ; CHECK-NEXT: JUMPDEST
55
+ ; CHECK-NEXT: PUSH1 0x5
56
+ ; CHECK-NEXT: SHL
57
+ ; CHECK-NEXT: XOR
65
58
; CHECK-NEXT: SWAP1
66
59
; CHECK-NEXT: JUMP
67
60
%1 = select i1 %a , i256 6 , i256 38
@@ -306,20 +299,13 @@ define i256 @select_196_184(i1 %a) {
306
299
; CHECK-LABEL: select_196_184:
307
300
; CHECK: ; %bb.0:
308
301
; CHECK-NEXT: JUMPDEST
302
+ ; CHECK-NEXT: PUSH1 0xC
303
+ ; CHECK-NEXT: PUSH1 0xB8
304
+ ; CHECK-NEXT: SWAP2
309
305
; CHECK-NEXT: PUSH1 0x1
310
306
; 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
307
+ ; CHECK-NEXT: MUL
308
+ ; CHECK-NEXT: ADD
323
309
; CHECK-NEXT: SWAP1
324
310
; CHECK-NEXT: JUMP
325
311
%1 = select i1 %a , i256 196 , i256 184
@@ -330,20 +316,13 @@ define i256 @select_184_196(i1 %a) {
330
316
; CHECK-LABEL: select_184_196:
331
317
; CHECK: ; %bb.0:
332
318
; CHECK-NEXT: JUMPDEST
319
+ ; CHECK-NEXT: PUSH1 0xC
320
+ ; CHECK-NEXT: SWAP1
333
321
; CHECK-NEXT: PUSH1 0x1
334
322
; 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
323
+ ; CHECK-NEXT: MUL
344
324
; CHECK-NEXT: PUSH1 0xC4
345
- ; CHECK-NEXT: .BB21_3:
346
- ; CHECK-NEXT: JUMPDEST
325
+ ; CHECK-NEXT: SUB
347
326
; CHECK-NEXT: SWAP1
348
327
; CHECK-NEXT: JUMP
349
328
%1 = select i1 %a , i256 184 , i256 196
@@ -354,22 +333,14 @@ define i256 @select_n196_n184(i1 %a) {
354
333
; CHECK-LABEL: select_n196_n184:
355
334
; CHECK: ; %bb.0:
356
335
; CHECK-NEXT: JUMPDEST
336
+ ; CHECK-NEXT: PUSH1 0xC
337
+ ; CHECK-NEXT: SWAP1
357
338
; CHECK-NEXT: PUSH1 0x1
358
339
; 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
340
+ ; CHECK-NEXT: MUL
369
341
; CHECK-NEXT: PUSH1 0xB7
370
342
; CHECK-NEXT: NOT
371
- ; CHECK-NEXT: .BB22_3:
372
- ; CHECK-NEXT: JUMPDEST
343
+ ; CHECK-NEXT: SUB
373
344
; CHECK-NEXT: SWAP1
374
345
; CHECK-NEXT: JUMP
375
346
%1 = select i1 %a , i256 -196 , i256 -184
@@ -380,22 +351,13 @@ define i256 @select_n184_n196(i1 %a) {
380
351
; CHECK-LABEL: select_n184_n196:
381
352
; CHECK: ; %bb.0:
382
353
; CHECK-NEXT: JUMPDEST
354
+ ; CHECK-NEXT: PUSH1 0xC
355
+ ; CHECK-NEXT: PUSH1 0xC4
356
+ ; CHECK-NEXT: SWAP2
383
357
; CHECK-NEXT: PUSH1 0x1
384
358
; 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
359
+ ; CHECK-NEXT: MUL
360
+ ; CHECK-NEXT: SUB
399
361
; CHECK-NEXT: SWAP1
400
362
; CHECK-NEXT: JUMP
401
363
%1 = select i1 %a , i256 -184 , i256 -196
@@ -406,15 +368,15 @@ define i256 @select_var_12345(i1 %a, i256 %b) {
406
368
; CHECK-LABEL: select_var_12345:
407
369
; CHECK: ; %bb.0:
408
370
; CHECK-NEXT: JUMPDEST
371
+ ; CHECK-NEXT: PUSH2 0x3039
372
+ ; CHECK-NEXT: DUP1
373
+ ; CHECK-NEXT: SWAP3
374
+ ; CHECK-NEXT: SUB
375
+ ; CHECK-NEXT: SWAP1
409
376
; CHECK-NEXT: PUSH1 0x1
410
377
; 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
378
+ ; CHECK-NEXT: MUL
379
+ ; CHECK-NEXT: ADD
418
380
; CHECK-NEXT: SWAP1
419
381
; CHECK-NEXT: JUMP
420
382
%1 = select i1 %a , i256 %b , i256 12345
@@ -425,16 +387,14 @@ define i256 @select_12345_var(i1 %a, i256 %b) {
425
387
; CHECK-LABEL: select_12345_var:
426
388
; CHECK: ; %bb.0:
427
389
; CHECK-NEXT: JUMPDEST
390
+ ; CHECK-NEXT: DUP2
391
+ ; CHECK-NEXT: PUSH2 0x3039
392
+ ; CHECK-NEXT: SUB
393
+ ; CHECK-NEXT: SWAP1
428
394
; CHECK-NEXT: PUSH1 0x1
429
395
; 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
396
+ ; CHECK-NEXT: MUL
397
+ ; CHECK-NEXT: ADD
438
398
; CHECK-NEXT: SWAP1
439
399
; CHECK-NEXT: JUMP
440
400
%1 = select i1 %a , i256 12345 , i256 %b
@@ -445,16 +405,15 @@ define i256 @select_var_n12345(i1 %a, i256 %b) {
445
405
; CHECK-LABEL: select_var_n12345:
446
406
; CHECK: ; %bb.0:
447
407
; CHECK-NEXT: JUMPDEST
408
+ ; CHECK-NEXT: PUSH2 0x3039
409
+ ; CHECK-NEXT: SWAP2
410
+ ; CHECK-NEXT: DUP3
411
+ ; CHECK-NEXT: ADD
412
+ ; CHECK-NEXT: SWAP1
448
413
; CHECK-NEXT: PUSH1 0x1
449
414
; 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
415
+ ; CHECK-NEXT: MUL
416
+ ; CHECK-NEXT: SUB
458
417
; CHECK-NEXT: SWAP1
459
418
; CHECK-NEXT: JUMP
460
419
%1 = select i1 %a , i256 %b , i256 -12345
@@ -465,17 +424,15 @@ define i256 @select_n12345_var(i1 %a, i256 %b) {
465
424
; CHECK-LABEL: select_n12345_var:
466
425
; CHECK: ; %bb.0:
467
426
; 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
427
+ ; CHECK-NEXT: DUP2
475
428
; CHECK-NEXT: PUSH2 0x3038
476
429
; CHECK-NEXT: NOT
477
- ; CHECK-NEXT: .BB27_2:
478
- ; CHECK-NEXT: JUMPDEST
430
+ ; CHECK-NEXT: SUB
431
+ ; CHECK-NEXT: SWAP1
432
+ ; CHECK-NEXT: PUSH1 0x1
433
+ ; CHECK-NEXT: AND
434
+ ; CHECK-NEXT: MUL
435
+ ; CHECK-NEXT: ADD
479
436
; CHECK-NEXT: SWAP1
480
437
; CHECK-NEXT: JUMP
481
438
%1 = select i1 %a , i256 -12345 , i256 %b
0 commit comments