@@ -15,8 +15,8 @@ define i256 @bitreversetest(i256 %v) {
1515; CHECK: ; %bb.0:
1616; CHECK-NEXT: JUMPDEST
1717; CHECK-NEXT: DUP1
18- ; CHECK-NEXT: PUSH1 0xF8
19- ; CHECK-NEXT: SHR
18+ ; CHECK-NEXT: PUSH0
19+ ; CHECK-NEXT: BYTE
2020; CHECK-NEXT: PUSH2 0xFF00
2121; CHECK-NEXT: DUP3
2222; CHECK-NEXT: PUSH1 0xE8
@@ -280,8 +280,8 @@ define i256 @bswaptest(i256 %v) {
280280; CHECK: ; %bb.0:
281281; CHECK-NEXT: JUMPDEST
282282; CHECK-NEXT: DUP1
283- ; CHECK-NEXT: PUSH1 0xF8
284- ; CHECK-NEXT: SHR
283+ ; CHECK-NEXT: PUSH0
284+ ; CHECK-NEXT: BYTE
285285; CHECK-NEXT: PUSH2 0xFF00
286286; CHECK-NEXT: DUP3
287287; CHECK-NEXT: PUSH1 0xE8
@@ -511,17 +511,15 @@ define i256 @ctpoptest(i256 %v) {
511511; CHECK-LABEL: ctpoptest:
512512; CHECK: ; %bb.0:
513513; CHECK-NEXT: JUMPDEST
514- ; CHECK-NEXT: PUSH1 0xFF
515514; CHECK-NEXT: PUSH32 0x101010101010101010101010101010101010101010101010101010101010101
516515; CHECK-NEXT: PUSH16 0xF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
517- ; CHECK-NEXT: DUP3
518- ; CHECK-NEXT: DUP3
519- ; CHECK-NEXT: DUP3
516+ ; CHECK-NEXT: DUP2
517+ ; CHECK-NEXT: DUP2
520518; CHECK-NEXT: PUSH32 0x3333333333333333333333333333333333333333333333333333333333333333
521- ; CHECK-NEXT: DUP8
519+ ; CHECK-NEXT: DUP6
522520; CHECK-NEXT: PUSH16 0x55555555555555555555555555555555
523521; CHECK-NEXT: DUP1
524- ; CHECK-NEXT: SWAP10
522+ ; CHECK-NEXT: SWAP8
525523; CHECK-NEXT: PUSH1 0x81
526524; CHECK-NEXT: SHR
527525; CHECK-NEXT: AND
@@ -538,7 +536,7 @@ define i256 @ctpoptest(i256 %v) {
538536; CHECK-NEXT: SWAP2
539537; CHECK-NEXT: AND
540538; CHECK-NEXT: ADD
541- ; CHECK-NEXT: SWAP9
539+ ; CHECK-NEXT: SWAP7
542540; CHECK-NEXT: DUP2
543541; CHECK-NEXT: PUSH1 0x1
544542; CHECK-NEXT: SHR
@@ -556,26 +554,24 @@ define i256 @ctpoptest(i256 %v) {
556554; CHECK-NEXT: SWAP2
557555; CHECK-NEXT: AND
558556; CHECK-NEXT: ADD
559- ; CHECK-NEXT: SWAP7
557+ ; CHECK-NEXT: SWAP5
560558; CHECK-NEXT: DUP1
561559; CHECK-NEXT: PUSH1 0x4
562560; CHECK-NEXT: SHR
563561; CHECK-NEXT: ADD
564562; CHECK-NEXT: AND
565563; CHECK-NEXT: MUL
566- ; CHECK-NEXT: PUSH1 0x78
567- ; CHECK-NEXT: SHR
568- ; CHECK-NEXT: AND
569- ; CHECK-NEXT: SWAP4
564+ ; CHECK-NEXT: PUSH1 0x10
565+ ; CHECK-NEXT: BYTE
566+ ; CHECK-NEXT: SWAP3
570567; CHECK-NEXT: DUP1
571568; CHECK-NEXT: PUSH1 0x4
572569; CHECK-NEXT: SHR
573570; CHECK-NEXT: ADD
574571; CHECK-NEXT: AND
575572; CHECK-NEXT: MUL
576- ; CHECK-NEXT: PUSH1 0x78
577- ; CHECK-NEXT: SHR
578- ; CHECK-NEXT: AND
573+ ; CHECK-NEXT: PUSH1 0x10
574+ ; CHECK-NEXT: BYTE
579575; CHECK-NEXT: ADD
580576; CHECK-NEXT: SWAP1
581577; CHECK-NEXT: JUMP
@@ -588,16 +584,14 @@ define i256 @ctlztest(i256 %v) {
588584; CHECK-LABEL: ctlztest:
589585; CHECK: ; %bb.0:
590586; CHECK-NEXT: JUMPDEST
591- ; CHECK-NEXT: PUSH1 0xFF
592587; CHECK-NEXT: PUSH32 0x101010101010101010101010101010101010101010101010101010101010101
593588; CHECK-NEXT: PUSH16 0xF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
594- ; CHECK-NEXT: DUP3
595- ; CHECK-NEXT: DUP3
596- ; CHECK-NEXT: DUP3
589+ ; CHECK-NEXT: DUP2
590+ ; CHECK-NEXT: DUP2
597591; CHECK-NEXT: PUSH32 0x3333333333333333333333333333333333333333333333333333333333333333
598- ; CHECK-NEXT: DUP8
592+ ; CHECK-NEXT: DUP6
599593; CHECK-NEXT: PUSH16 0x55555555555555555555555555555555
600- ; CHECK-NEXT: SWAP9
594+ ; CHECK-NEXT: SWAP7
601595; CHECK-NEXT: PUSH1 0x1
602596; CHECK-NEXT: SHR
603597; CHECK-NEXT: OR
@@ -631,7 +625,7 @@ define i256 @ctlztest(i256 %v) {
631625; CHECK-NEXT: OR
632626; CHECK-NEXT: NOT
633627; CHECK-NEXT: PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
634- ; CHECK-NEXT: DUP10
628+ ; CHECK-NEXT: DUP8
635629; CHECK-NEXT: DUP3
636630; CHECK-NEXT: PUSH1 0x81
637631; CHECK-NEXT: SHR
@@ -649,7 +643,7 @@ define i256 @ctlztest(i256 %v) {
649643; CHECK-NEXT: SWAP2
650644; CHECK-NEXT: AND
651645; CHECK-NEXT: ADD
652- ; CHECK-NEXT: SWAP10
646+ ; CHECK-NEXT: SWAP8
653647; CHECK-NEXT: DUP3
654648; CHECK-NEXT: PUSH1 0x1
655649; CHECK-NEXT: SHR
@@ -666,26 +660,24 @@ define i256 @ctlztest(i256 %v) {
666660; CHECK-NEXT: SWAP2
667661; CHECK-NEXT: AND
668662; CHECK-NEXT: ADD
669- ; CHECK-NEXT: SWAP7
663+ ; CHECK-NEXT: SWAP5
670664; CHECK-NEXT: DUP1
671665; CHECK-NEXT: PUSH1 0x4
672666; CHECK-NEXT: SHR
673667; CHECK-NEXT: ADD
674668; CHECK-NEXT: AND
675669; CHECK-NEXT: MUL
676- ; CHECK-NEXT: PUSH1 0x78
677- ; CHECK-NEXT: SHR
678- ; CHECK-NEXT: AND
679- ; CHECK-NEXT: SWAP4
670+ ; CHECK-NEXT: PUSH1 0x10
671+ ; CHECK-NEXT: BYTE
672+ ; CHECK-NEXT: SWAP3
680673; CHECK-NEXT: DUP1
681674; CHECK-NEXT: PUSH1 0x4
682675; CHECK-NEXT: SHR
683676; CHECK-NEXT: ADD
684677; CHECK-NEXT: AND
685678; CHECK-NEXT: MUL
686- ; CHECK-NEXT: PUSH1 0x78
687- ; CHECK-NEXT: SHR
688- ; CHECK-NEXT: AND
679+ ; CHECK-NEXT: PUSH1 0x10
680+ ; CHECK-NEXT: BYTE
689681; CHECK-NEXT: ADD
690682; CHECK-NEXT: SWAP1
691683; CHECK-NEXT: JUMP
@@ -698,23 +690,21 @@ define i256 @cttztest(i256 %v) {
698690; CHECK-LABEL: cttztest:
699691; CHECK: ; %bb.0:
700692; CHECK-NEXT: JUMPDEST
701- ; CHECK-NEXT: PUSH1 0xFF
702693; CHECK-NEXT: PUSH32 0x101010101010101010101010101010101010101010101010101010101010101
703694; CHECK-NEXT: PUSH16 0xF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
704- ; CHECK-NEXT: DUP3
705- ; CHECK-NEXT: DUP3
706- ; CHECK-NEXT: DUP3
695+ ; CHECK-NEXT: DUP2
696+ ; CHECK-NEXT: DUP2
707697; CHECK-NEXT: PUSH32 0x3333333333333333333333333333333333333333333333333333333333333333
708- ; CHECK-NEXT: DUP8
698+ ; CHECK-NEXT: DUP6
709699; CHECK-NEXT: PUSH1 0x1
710700; CHECK-NEXT: PUSH16 0x55555555555555555555555555555555
711- ; CHECK-NEXT: SWAP10
701+ ; CHECK-NEXT: SWAP8
712702; CHECK-NEXT: SUB
713703; CHECK-NEXT: SWAP1
714704; CHECK-NEXT: NOT
715705; CHECK-NEXT: AND
716706; CHECK-NEXT: PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
717- ; CHECK-NEXT: DUP10
707+ ; CHECK-NEXT: DUP8
718708; CHECK-NEXT: DUP3
719709; CHECK-NEXT: PUSH1 0x81
720710; CHECK-NEXT: SHR
@@ -732,7 +722,7 @@ define i256 @cttztest(i256 %v) {
732722; CHECK-NEXT: SWAP2
733723; CHECK-NEXT: AND
734724; CHECK-NEXT: ADD
735- ; CHECK-NEXT: SWAP10
725+ ; CHECK-NEXT: SWAP8
736726; CHECK-NEXT: DUP3
737727; CHECK-NEXT: PUSH1 0x1
738728; CHECK-NEXT: SHR
@@ -749,26 +739,24 @@ define i256 @cttztest(i256 %v) {
749739; CHECK-NEXT: SWAP2
750740; CHECK-NEXT: AND
751741; CHECK-NEXT: ADD
752- ; CHECK-NEXT: SWAP7
742+ ; CHECK-NEXT: SWAP5
753743; CHECK-NEXT: DUP1
754744; CHECK-NEXT: PUSH1 0x4
755745; CHECK-NEXT: SHR
756746; CHECK-NEXT: ADD
757747; CHECK-NEXT: AND
758748; CHECK-NEXT: MUL
759- ; CHECK-NEXT: PUSH1 0x78
760- ; CHECK-NEXT: SHR
761- ; CHECK-NEXT: AND
762- ; CHECK-NEXT: SWAP4
749+ ; CHECK-NEXT: PUSH1 0x10
750+ ; CHECK-NEXT: BYTE
751+ ; CHECK-NEXT: SWAP3
763752; CHECK-NEXT: DUP1
764753; CHECK-NEXT: PUSH1 0x4
765754; CHECK-NEXT: SHR
766755; CHECK-NEXT: ADD
767756; CHECK-NEXT: AND
768757; CHECK-NEXT: MUL
769- ; CHECK-NEXT: PUSH1 0x78
770- ; CHECK-NEXT: SHR
771- ; CHECK-NEXT: AND
758+ ; CHECK-NEXT: PUSH1 0x10
759+ ; CHECK-NEXT: BYTE
772760; CHECK-NEXT: ADD
773761; CHECK-NEXT: SWAP1
774762; CHECK-NEXT: JUMP
0 commit comments