|
498 | 498 | (XOR x (MOVWconst [c])) => (XORconst [c] x)
|
499 | 499 | (BIC x (MOVWconst [c])) => (BICconst [c] x)
|
500 | 500 |
|
501 |
| -(SLL x (MOVWconst [c])) => (SLLconst x [c&31]) // Note: I don't think we ever generate bad constant shifts (i.e. c>=32) |
502 |
| -(SRL x (MOVWconst [c])) => (SRLconst x [c&31]) |
503 |
| -(SRA x (MOVWconst [c])) => (SRAconst x [c&31]) |
| 501 | +(SLL x (MOVWconst [c])) && 0 <= c && c < 32 => (SLLconst x [c]) |
| 502 | +(SRL x (MOVWconst [c])) && 0 <= c && c < 32 => (SRLconst x [c]) |
| 503 | +(SRA x (MOVWconst [c])) && 0 <= c && c < 32 => (SRAconst x [c]) |
504 | 504 |
|
505 | 505 | (CMP x (MOVWconst [c])) => (CMPconst [c] x)
|
506 | 506 | (CMP (MOVWconst [c]) x) => (InvertFlags (CMPconst [c] x))
|
|
1075 | 1075 | (CMNshiftRL x (MOVWconst [c]) [d]) => (CMNconst x [int32(uint32(c)>>uint64(d))])
|
1076 | 1076 | (CMNshiftRA x (MOVWconst [c]) [d]) => (CMNconst x [c>>uint64(d)])
|
1077 | 1077 |
|
1078 |
| -(ADDshiftLLreg x y (MOVWconst [c])) => (ADDshiftLL x y [c]) |
1079 |
| -(ADDshiftRLreg x y (MOVWconst [c])) => (ADDshiftRL x y [c]) |
1080 |
| -(ADDshiftRAreg x y (MOVWconst [c])) => (ADDshiftRA x y [c]) |
1081 |
| -(ADCshiftLLreg x y (MOVWconst [c]) flags) => (ADCshiftLL x y [c] flags) |
1082 |
| -(ADCshiftRLreg x y (MOVWconst [c]) flags) => (ADCshiftRL x y [c] flags) |
1083 |
| -(ADCshiftRAreg x y (MOVWconst [c]) flags) => (ADCshiftRA x y [c] flags) |
1084 |
| -(ADDSshiftLLreg x y (MOVWconst [c])) => (ADDSshiftLL x y [c]) |
1085 |
| -(ADDSshiftRLreg x y (MOVWconst [c])) => (ADDSshiftRL x y [c]) |
1086 |
| -(ADDSshiftRAreg x y (MOVWconst [c])) => (ADDSshiftRA x y [c]) |
1087 |
| -(SUBshiftLLreg x y (MOVWconst [c])) => (SUBshiftLL x y [c]) |
1088 |
| -(SUBshiftRLreg x y (MOVWconst [c])) => (SUBshiftRL x y [c]) |
1089 |
| -(SUBshiftRAreg x y (MOVWconst [c])) => (SUBshiftRA x y [c]) |
1090 |
| -(SBCshiftLLreg x y (MOVWconst [c]) flags) => (SBCshiftLL x y [c] flags) |
1091 |
| -(SBCshiftRLreg x y (MOVWconst [c]) flags) => (SBCshiftRL x y [c] flags) |
1092 |
| -(SBCshiftRAreg x y (MOVWconst [c]) flags) => (SBCshiftRA x y [c] flags) |
1093 |
| -(SUBSshiftLLreg x y (MOVWconst [c])) => (SUBSshiftLL x y [c]) |
1094 |
| -(SUBSshiftRLreg x y (MOVWconst [c])) => (SUBSshiftRL x y [c]) |
1095 |
| -(SUBSshiftRAreg x y (MOVWconst [c])) => (SUBSshiftRA x y [c]) |
1096 |
| -(RSBshiftLLreg x y (MOVWconst [c])) => (RSBshiftLL x y [c]) |
1097 |
| -(RSBshiftRLreg x y (MOVWconst [c])) => (RSBshiftRL x y [c]) |
1098 |
| -(RSBshiftRAreg x y (MOVWconst [c])) => (RSBshiftRA x y [c]) |
1099 |
| -(RSCshiftLLreg x y (MOVWconst [c]) flags) => (RSCshiftLL x y [c] flags) |
1100 |
| -(RSCshiftRLreg x y (MOVWconst [c]) flags) => (RSCshiftRL x y [c] flags) |
1101 |
| -(RSCshiftRAreg x y (MOVWconst [c]) flags) => (RSCshiftRA x y [c] flags) |
1102 |
| -(RSBSshiftLLreg x y (MOVWconst [c])) => (RSBSshiftLL x y [c]) |
1103 |
| -(RSBSshiftRLreg x y (MOVWconst [c])) => (RSBSshiftRL x y [c]) |
1104 |
| -(RSBSshiftRAreg x y (MOVWconst [c])) => (RSBSshiftRA x y [c]) |
1105 |
| -(ANDshiftLLreg x y (MOVWconst [c])) => (ANDshiftLL x y [c]) |
1106 |
| -(ANDshiftRLreg x y (MOVWconst [c])) => (ANDshiftRL x y [c]) |
1107 |
| -(ANDshiftRAreg x y (MOVWconst [c])) => (ANDshiftRA x y [c]) |
1108 |
| -(ORshiftLLreg x y (MOVWconst [c])) => (ORshiftLL x y [c]) |
1109 |
| -(ORshiftRLreg x y (MOVWconst [c])) => (ORshiftRL x y [c]) |
1110 |
| -(ORshiftRAreg x y (MOVWconst [c])) => (ORshiftRA x y [c]) |
1111 |
| -(XORshiftLLreg x y (MOVWconst [c])) => (XORshiftLL x y [c]) |
1112 |
| -(XORshiftRLreg x y (MOVWconst [c])) => (XORshiftRL x y [c]) |
1113 |
| -(XORshiftRAreg x y (MOVWconst [c])) => (XORshiftRA x y [c]) |
1114 |
| -(BICshiftLLreg x y (MOVWconst [c])) => (BICshiftLL x y [c]) |
1115 |
| -(BICshiftRLreg x y (MOVWconst [c])) => (BICshiftRL x y [c]) |
1116 |
| -(BICshiftRAreg x y (MOVWconst [c])) => (BICshiftRA x y [c]) |
1117 |
| -(MVNshiftLLreg x (MOVWconst [c])) => (MVNshiftLL x [c]) |
1118 |
| -(MVNshiftRLreg x (MOVWconst [c])) => (MVNshiftRL x [c]) |
1119 |
| -(MVNshiftRAreg x (MOVWconst [c])) => (MVNshiftRA x [c]) |
1120 |
| -(CMPshiftLLreg x y (MOVWconst [c])) => (CMPshiftLL x y [c]) |
1121 |
| -(CMPshiftRLreg x y (MOVWconst [c])) => (CMPshiftRL x y [c]) |
1122 |
| -(CMPshiftRAreg x y (MOVWconst [c])) => (CMPshiftRA x y [c]) |
1123 |
| -(TSTshiftLLreg x y (MOVWconst [c])) => (TSTshiftLL x y [c]) |
1124 |
| -(TSTshiftRLreg x y (MOVWconst [c])) => (TSTshiftRL x y [c]) |
1125 |
| -(TSTshiftRAreg x y (MOVWconst [c])) => (TSTshiftRA x y [c]) |
1126 |
| -(TEQshiftLLreg x y (MOVWconst [c])) => (TEQshiftLL x y [c]) |
1127 |
| -(TEQshiftRLreg x y (MOVWconst [c])) => (TEQshiftRL x y [c]) |
1128 |
| -(TEQshiftRAreg x y (MOVWconst [c])) => (TEQshiftRA x y [c]) |
1129 |
| -(CMNshiftLLreg x y (MOVWconst [c])) => (CMNshiftLL x y [c]) |
1130 |
| -(CMNshiftRLreg x y (MOVWconst [c])) => (CMNshiftRL x y [c]) |
1131 |
| -(CMNshiftRAreg x y (MOVWconst [c])) => (CMNshiftRA x y [c]) |
| 1078 | +(ADDshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ADDshiftLL x y [c]) |
| 1079 | +(ADDshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ADDshiftRL x y [c]) |
| 1080 | +(ADDshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ADDshiftRA x y [c]) |
| 1081 | +(ADCshiftLLreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (ADCshiftLL x y [c] flags) |
| 1082 | +(ADCshiftRLreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (ADCshiftRL x y [c] flags) |
| 1083 | +(ADCshiftRAreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (ADCshiftRA x y [c] flags) |
| 1084 | +(ADDSshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ADDSshiftLL x y [c]) |
| 1085 | +(ADDSshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ADDSshiftRL x y [c]) |
| 1086 | +(ADDSshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ADDSshiftRA x y [c]) |
| 1087 | +(SUBshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (SUBshiftLL x y [c]) |
| 1088 | +(SUBshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (SUBshiftRL x y [c]) |
| 1089 | +(SUBshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (SUBshiftRA x y [c]) |
| 1090 | +(SBCshiftLLreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (SBCshiftLL x y [c] flags) |
| 1091 | +(SBCshiftRLreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (SBCshiftRL x y [c] flags) |
| 1092 | +(SBCshiftRAreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (SBCshiftRA x y [c] flags) |
| 1093 | +(SUBSshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (SUBSshiftLL x y [c]) |
| 1094 | +(SUBSshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (SUBSshiftRL x y [c]) |
| 1095 | +(SUBSshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (SUBSshiftRA x y [c]) |
| 1096 | +(RSBshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (RSBshiftLL x y [c]) |
| 1097 | +(RSBshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (RSBshiftRL x y [c]) |
| 1098 | +(RSBshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (RSBshiftRA x y [c]) |
| 1099 | +(RSCshiftLLreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (RSCshiftLL x y [c] flags) |
| 1100 | +(RSCshiftRLreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (RSCshiftRL x y [c] flags) |
| 1101 | +(RSCshiftRAreg x y (MOVWconst [c]) flags) && 0 <= c && c < 32 => (RSCshiftRA x y [c] flags) |
| 1102 | +(RSBSshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (RSBSshiftLL x y [c]) |
| 1103 | +(RSBSshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (RSBSshiftRL x y [c]) |
| 1104 | +(RSBSshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (RSBSshiftRA x y [c]) |
| 1105 | +(ANDshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ANDshiftLL x y [c]) |
| 1106 | +(ANDshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ANDshiftRL x y [c]) |
| 1107 | +(ANDshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ANDshiftRA x y [c]) |
| 1108 | +(ORshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ORshiftLL x y [c]) |
| 1109 | +(ORshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ORshiftRL x y [c]) |
| 1110 | +(ORshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (ORshiftRA x y [c]) |
| 1111 | +(XORshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (XORshiftLL x y [c]) |
| 1112 | +(XORshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (XORshiftRL x y [c]) |
| 1113 | +(XORshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (XORshiftRA x y [c]) |
| 1114 | +(BICshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (BICshiftLL x y [c]) |
| 1115 | +(BICshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (BICshiftRL x y [c]) |
| 1116 | +(BICshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (BICshiftRA x y [c]) |
| 1117 | +(MVNshiftLLreg x (MOVWconst [c])) && 0 <= c && c < 32 => (MVNshiftLL x [c]) |
| 1118 | +(MVNshiftRLreg x (MOVWconst [c])) && 0 <= c && c < 32 => (MVNshiftRL x [c]) |
| 1119 | +(MVNshiftRAreg x (MOVWconst [c])) && 0 <= c && c < 32 => (MVNshiftRA x [c]) |
| 1120 | +(CMPshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (CMPshiftLL x y [c]) |
| 1121 | +(CMPshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (CMPshiftRL x y [c]) |
| 1122 | +(CMPshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (CMPshiftRA x y [c]) |
| 1123 | +(TSTshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (TSTshiftLL x y [c]) |
| 1124 | +(TSTshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (TSTshiftRL x y [c]) |
| 1125 | +(TSTshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (TSTshiftRA x y [c]) |
| 1126 | +(TEQshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (TEQshiftLL x y [c]) |
| 1127 | +(TEQshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (TEQshiftRL x y [c]) |
| 1128 | +(TEQshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (TEQshiftRA x y [c]) |
| 1129 | +(CMNshiftLLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (CMNshiftLL x y [c]) |
| 1130 | +(CMNshiftRLreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (CMNshiftRL x y [c]) |
| 1131 | +(CMNshiftRAreg x y (MOVWconst [c])) && 0 <= c && c < 32 => (CMNshiftRA x y [c]) |
1132 | 1132 |
|
1133 | 1133 | // Generate rotates
|
1134 | 1134 | (ADDshiftLL [c] (SRLconst x [32-c]) x) => (SRRconst [32-c] x)
|
|
0 commit comments