@@ -1864,64 +1864,6 @@ def : Pat<(fshl GR64:$src1, GR64:$src2, (shiftMask64 CL)),
18641864def : Pat<(fshr GR64:$src2, GR64:$src1, (shiftMask64 CL)),
18651865 (SHRD64rrCL GR64:$src1, GR64:$src2)>;
18661866
1867- let Predicates = [HasBMI2] in {
1868- let AddedComplexity = 1 in {
1869- def : Pat<(sra GR32:$src1, (shiftMask32 GR8:$src2)),
1870- (SARX32rr GR32:$src1,
1871- (INSERT_SUBREG
1872- (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1873- def : Pat<(sra GR64:$src1, (shiftMask64 GR8:$src2)),
1874- (SARX64rr GR64:$src1,
1875- (INSERT_SUBREG
1876- (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1877-
1878- def : Pat<(srl GR32:$src1, (shiftMask32 GR8:$src2)),
1879- (SHRX32rr GR32:$src1,
1880- (INSERT_SUBREG
1881- (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1882- def : Pat<(srl GR64:$src1, (shiftMask64 GR8:$src2)),
1883- (SHRX64rr GR64:$src1,
1884- (INSERT_SUBREG
1885- (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1886-
1887- def : Pat<(shl GR32:$src1, (shiftMask32 GR8:$src2)),
1888- (SHLX32rr GR32:$src1,
1889- (INSERT_SUBREG
1890- (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1891- def : Pat<(shl GR64:$src1, (shiftMask64 GR8:$src2)),
1892- (SHLX64rr GR64:$src1,
1893- (INSERT_SUBREG
1894- (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1895- }
1896-
1897- def : Pat<(sra (loadi32 addr:$src1), (shiftMask32 GR8:$src2)),
1898- (SARX32rm addr:$src1,
1899- (INSERT_SUBREG
1900- (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1901- def : Pat<(sra (loadi64 addr:$src1), (shiftMask64 GR8:$src2)),
1902- (SARX64rm addr:$src1,
1903- (INSERT_SUBREG
1904- (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1905-
1906- def : Pat<(srl (loadi32 addr:$src1), (shiftMask32 GR8:$src2)),
1907- (SHRX32rm addr:$src1,
1908- (INSERT_SUBREG
1909- (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1910- def : Pat<(srl (loadi64 addr:$src1), (shiftMask64 GR8:$src2)),
1911- (SHRX64rm addr:$src1,
1912- (INSERT_SUBREG
1913- (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1914-
1915- def : Pat<(shl (loadi32 addr:$src1), (shiftMask32 GR8:$src2)),
1916- (SHLX32rm addr:$src1,
1917- (INSERT_SUBREG
1918- (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1919- def : Pat<(shl (loadi64 addr:$src1), (shiftMask64 GR8:$src2)),
1920- (SHLX64rm addr:$src1,
1921- (INSERT_SUBREG
1922- (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
1923- }
1924-
19251867// Use BTR/BTS/BTC for clearing/setting/toggling a bit in a variable location.
19261868multiclass one_bit_patterns<RegisterClass RC, ValueType VT, Instruction BTR,
19271869 Instruction BTS, Instruction BTC,
0 commit comments