Skip to content

Commit 6c1b5ec

Browse files
committed
[X86][NFC] Simplify the patterns of BMI shift/rotate instructions in X86InstrCompiler.td
This patch is to extract NFC in #77433 into a separate commit.
1 parent f1ef910 commit 6c1b5ec

File tree

2 files changed

+12
-58
lines changed

2 files changed

+12
-58
lines changed

llvm/lib/Target/X86/X86InstrCompiler.td

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1864,64 +1864,6 @@ def : Pat<(fshl GR64:$src1, GR64:$src2, (shiftMask64 CL)),
18641864
def : 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.
19261868
multiclass one_bit_patterns<RegisterClass RC, ValueType VT, Instruction BTR,
19271869
Instruction BTS, Instruction BTC,

llvm/lib/Target/X86/X86InstrShiftRotate.td

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,12 @@ multiclass ShiftX_Pats<SDNode op> {
330330
def : Pat<(op GR64:$src1, GR8:$src2),
331331
(!cast<Instruction>(NAME#"64rr") GR64:$src1,
332332
(INSERT_SUBREG (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
333+
def : Pat<(op GR32:$src1, (shiftMask32 GR8:$src2)),
334+
(!cast<Instruction>(NAME#"32rr") GR32:$src1,
335+
(INSERT_SUBREG (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
336+
def : Pat<(op GR64:$src1, (shiftMask64 GR8:$src2)),
337+
(!cast<Instruction>(NAME#"64rr") GR64:$src1,
338+
(INSERT_SUBREG (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
333339
}
334340
// We prefer to use
335341
// mov (%ecx), %esi
@@ -347,6 +353,12 @@ multiclass ShiftX_Pats<SDNode op> {
347353
def : Pat<(op (loadi64 addr:$src1), GR8:$src2),
348354
(!cast<Instruction>(NAME#"64rm") addr:$src1,
349355
(INSERT_SUBREG (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
356+
def : Pat<(op (loadi32 addr:$src1), (shiftMask32 GR8:$src2)),
357+
(!cast<Instruction>(NAME#"32rm") addr:$src1,
358+
(INSERT_SUBREG (i32 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
359+
def : Pat<(op (loadi64 addr:$src1), (shiftMask64 GR8:$src2)),
360+
(!cast<Instruction>(NAME#"64rm") addr:$src1,
361+
(INSERT_SUBREG (i64 (IMPLICIT_DEF)), GR8:$src2, sub_8bit))>;
350362
}
351363

352364
let Predicates = [HasBMI2] in {

0 commit comments

Comments
 (0)