@@ -3989,7 +3989,7 @@ let Constraints = "$src1 = $dst" in {
3989
3989
3990
3990
let ExeDomain = SSEPackedInt in {
3991
3991
multiclass sse2_pinsrw<bit Is2Addr = 1> {
3992
- def rr : Ii8<0xC4, MRMSrcReg,
3992
+ def rri : Ii8<0xC4, MRMSrcReg,
3993
3993
(outs VR128:$dst), (ins VR128:$src1,
3994
3994
GR32orGR64:$src2, u8imm:$src3),
3995
3995
!if(Is2Addr,
@@ -3998,7 +3998,7 @@ multiclass sse2_pinsrw<bit Is2Addr = 1> {
3998
3998
[(set VR128:$dst,
3999
3999
(X86pinsrw VR128:$src1, GR32orGR64:$src2, timm:$src3))]>,
4000
4000
Sched<[WriteVecInsert, ReadDefault, ReadInt2Fpu]>;
4001
- def rm : Ii8<0xC4, MRMSrcMem,
4001
+ def rmi : Ii8<0xC4, MRMSrcMem,
4002
4002
(outs VR128:$dst), (ins VR128:$src1,
4003
4003
i16mem:$src2, u8imm:$src3),
4004
4004
!if(Is2Addr,
@@ -4012,13 +4012,13 @@ multiclass sse2_pinsrw<bit Is2Addr = 1> {
4012
4012
4013
4013
// Extract
4014
4014
let Predicates = [HasAVX, NoBWI] in
4015
- def VPEXTRWrr : Ii8<0xC5, MRMSrcReg,
4015
+ def VPEXTRWrri : Ii8<0xC5, MRMSrcReg,
4016
4016
(outs GR32orGR64:$dst), (ins VR128:$src1, u8imm:$src2),
4017
4017
"vpextrw\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4018
4018
[(set GR32orGR64:$dst, (X86pextrw (v8i16 VR128:$src1),
4019
4019
timm:$src2))]>,
4020
4020
TB, PD, VEX, WIG, Sched<[WriteVecExtract]>;
4021
- def PEXTRWrr : PDIi8<0xC5, MRMSrcReg,
4021
+ def PEXTRWrri : PDIi8<0xC5, MRMSrcReg,
4022
4022
(outs GR32orGR64:$dst), (ins VR128:$src1, u8imm:$src2),
4023
4023
"pextrw\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4024
4024
[(set GR32orGR64:$dst, (X86pextrw (v8i16 VR128:$src1),
@@ -4036,16 +4036,16 @@ defm PINSRW : sse2_pinsrw, TB, PD;
4036
4036
4037
4037
// Always select FP16 instructions if available.
4038
4038
let Predicates = [UseSSE2], AddedComplexity = -10 in {
4039
- def : Pat<(f16 (load addr:$src)), (COPY_TO_REGCLASS (PINSRWrm (v8i16 (IMPLICIT_DEF)), addr:$src, 0), FR16)>;
4040
- def : Pat<(store f16:$src, addr:$dst), (MOV16mr addr:$dst, (EXTRACT_SUBREG (PEXTRWrr (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0), sub_16bit))>;
4041
- def : Pat<(i16 (bitconvert f16:$src)), (EXTRACT_SUBREG (PEXTRWrr (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0), sub_16bit)>;
4042
- def : Pat<(f16 (bitconvert i16:$src)), (COPY_TO_REGCLASS (PINSRWrr (v8i16 (IMPLICIT_DEF)), (INSERT_SUBREG (IMPLICIT_DEF), GR16:$src, sub_16bit), 0), FR16)>;
4039
+ def : Pat<(f16 (load addr:$src)), (COPY_TO_REGCLASS (PINSRWrmi (v8i16 (IMPLICIT_DEF)), addr:$src, 0), FR16)>;
4040
+ def : Pat<(store f16:$src, addr:$dst), (MOV16mr addr:$dst, (EXTRACT_SUBREG (PEXTRWrri (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0), sub_16bit))>;
4041
+ def : Pat<(i16 (bitconvert f16:$src)), (EXTRACT_SUBREG (PEXTRWrri (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0), sub_16bit)>;
4042
+ def : Pat<(f16 (bitconvert i16:$src)), (COPY_TO_REGCLASS (PINSRWrri (v8i16 (IMPLICIT_DEF)), (INSERT_SUBREG (IMPLICIT_DEF), GR16:$src, sub_16bit), 0), FR16)>;
4043
4043
}
4044
4044
4045
4045
let Predicates = [HasAVX, NoBWI] in {
4046
- def : Pat<(f16 (load addr:$src)), (COPY_TO_REGCLASS (VPINSRWrm (v8i16 (IMPLICIT_DEF)), addr:$src, 0), FR16)>;
4047
- def : Pat<(i16 (bitconvert f16:$src)), (EXTRACT_SUBREG (VPEXTRWrr (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0), sub_16bit)>;
4048
- def : Pat<(f16 (bitconvert i16:$src)), (COPY_TO_REGCLASS (VPINSRWrr (v8i16 (IMPLICIT_DEF)), (INSERT_SUBREG (IMPLICIT_DEF), GR16:$src, sub_16bit), 0), FR16)>;
4046
+ def : Pat<(f16 (load addr:$src)), (COPY_TO_REGCLASS (VPINSRWrmi (v8i16 (IMPLICIT_DEF)), addr:$src, 0), FR16)>;
4047
+ def : Pat<(i16 (bitconvert f16:$src)), (EXTRACT_SUBREG (VPEXTRWrri (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0), sub_16bit)>;
4048
+ def : Pat<(f16 (bitconvert i16:$src)), (COPY_TO_REGCLASS (VPINSRWrri (v8i16 (IMPLICIT_DEF)), (INSERT_SUBREG (IMPLICIT_DEF), GR16:$src, sub_16bit), 0), FR16)>;
4049
4049
}
4050
4050
4051
4051
//===---------------------------------------------------------------------===//
@@ -5234,15 +5234,15 @@ let Predicates = [UseSSE41] in {
5234
5234
5235
5235
/// SS41I_binop_ext8 - SSE 4.1 extract 8 bits to 32 bit reg or 8 bit mem
5236
5236
multiclass SS41I_extract8<bits<8> opc, string OpcodeStr> {
5237
- def rr : SS4AIi8<opc, MRMDestReg, (outs GR32orGR64:$dst),
5237
+ def rri : SS4AIi8<opc, MRMDestReg, (outs GR32orGR64:$dst),
5238
5238
(ins VR128:$src1, u8imm:$src2),
5239
5239
!strconcat(OpcodeStr,
5240
5240
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
5241
5241
[(set GR32orGR64:$dst, (X86pextrb (v16i8 VR128:$src1),
5242
5242
timm:$src2))]>,
5243
5243
Sched<[WriteVecExtract]>;
5244
5244
let hasSideEffects = 0, mayStore = 1 in
5245
- def mr : SS4AIi8<opc, MRMDestMem, (outs),
5245
+ def mri : SS4AIi8<opc, MRMDestMem, (outs),
5246
5246
(ins i8mem:$dst, VR128:$src1, u8imm:$src2),
5247
5247
!strconcat(OpcodeStr,
5248
5248
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
@@ -5259,14 +5259,14 @@ defm PEXTRB : SS41I_extract8<0x14, "pextrb">;
5259
5259
/// SS41I_extract16 - SSE 4.1 extract 16 bits to memory destination
5260
5260
multiclass SS41I_extract16<bits<8> opc, string OpcodeStr> {
5261
5261
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
5262
- def rr_REV : SS4AIi8<opc, MRMDestReg, (outs GR32orGR64:$dst),
5262
+ def rri_REV : SS4AIi8<opc, MRMDestReg, (outs GR32orGR64:$dst),
5263
5263
(ins VR128:$src1, u8imm:$src2),
5264
5264
!strconcat(OpcodeStr,
5265
5265
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"), []>,
5266
5266
Sched<[WriteVecExtract]>;
5267
5267
5268
5268
let hasSideEffects = 0, mayStore = 1 in
5269
- def mr : SS4AIi8<opc, MRMDestMem, (outs),
5269
+ def mri : SS4AIi8<opc, MRMDestMem, (outs),
5270
5270
(ins i16mem:$dst, VR128:$src1, u8imm:$src2),
5271
5271
!strconcat(OpcodeStr,
5272
5272
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
@@ -5280,22 +5280,22 @@ let Predicates = [HasAVX, NoBWI] in
5280
5280
defm PEXTRW : SS41I_extract16<0x15, "pextrw">;
5281
5281
5282
5282
let Predicates = [UseSSE41] in
5283
- def : Pat<(store f16:$src, addr:$dst), (PEXTRWmr addr:$dst, (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0)>;
5283
+ def : Pat<(store f16:$src, addr:$dst), (PEXTRWmri addr:$dst, (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0)>;
5284
5284
5285
5285
let Predicates = [HasAVX, NoBWI] in
5286
- def : Pat<(store f16:$src, addr:$dst), (VPEXTRWmr addr:$dst, (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0)>;
5286
+ def : Pat<(store f16:$src, addr:$dst), (VPEXTRWmri addr:$dst, (v8i16 (COPY_TO_REGCLASS FR16:$src, VR128)), 0)>;
5287
5287
5288
5288
5289
5289
/// SS41I_extract32 - SSE 4.1 extract 32 bits to int reg or memory destination
5290
5290
multiclass SS41I_extract32<bits<8> opc, string OpcodeStr> {
5291
- def rr : SS4AIi8<opc, MRMDestReg, (outs GR32:$dst),
5291
+ def rri : SS4AIi8<opc, MRMDestReg, (outs GR32:$dst),
5292
5292
(ins VR128:$src1, u8imm:$src2),
5293
5293
!strconcat(OpcodeStr,
5294
5294
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
5295
5295
[(set GR32:$dst,
5296
5296
(extractelt (v4i32 VR128:$src1), imm:$src2))]>,
5297
5297
Sched<[WriteVecExtract]>;
5298
- def mr : SS4AIi8<opc, MRMDestMem, (outs),
5298
+ def mri : SS4AIi8<opc, MRMDestMem, (outs),
5299
5299
(ins i32mem:$dst, VR128:$src1, u8imm:$src2),
5300
5300
!strconcat(OpcodeStr,
5301
5301
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
@@ -5310,14 +5310,14 @@ defm PEXTRD : SS41I_extract32<0x16, "pextrd">;
5310
5310
5311
5311
/// SS41I_extract32 - SSE 4.1 extract 32 bits to int reg or memory destination
5312
5312
multiclass SS41I_extract64<bits<8> opc, string OpcodeStr> {
5313
- def rr : SS4AIi8<opc, MRMDestReg, (outs GR64:$dst),
5313
+ def rri : SS4AIi8<opc, MRMDestReg, (outs GR64:$dst),
5314
5314
(ins VR128:$src1, u8imm:$src2),
5315
5315
!strconcat(OpcodeStr,
5316
5316
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
5317
5317
[(set GR64:$dst,
5318
5318
(extractelt (v2i64 VR128:$src1), imm:$src2))]>,
5319
5319
Sched<[WriteVecExtract]>;
5320
- def mr : SS4AIi8<opc, MRMDestMem, (outs),
5320
+ def mri : SS4AIi8<opc, MRMDestMem, (outs),
5321
5321
(ins i64mem:$dst, VR128:$src1, u8imm:$src2),
5322
5322
!strconcat(OpcodeStr,
5323
5323
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
@@ -5359,7 +5359,7 @@ let ExeDomain = SSEPackedSingle in {
5359
5359
//===----------------------------------------------------------------------===//
5360
5360
5361
5361
multiclass SS41I_insert8<bits<8> opc, string asm, bit Is2Addr = 1> {
5362
- def rr : SS4AIi8<opc, MRMSrcReg, (outs VR128:$dst),
5362
+ def rri : SS4AIi8<opc, MRMSrcReg, (outs VR128:$dst),
5363
5363
(ins VR128:$src1, GR32orGR64:$src2, u8imm:$src3),
5364
5364
!if(Is2Addr,
5365
5365
!strconcat(asm, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
@@ -5368,7 +5368,7 @@ multiclass SS41I_insert8<bits<8> opc, string asm, bit Is2Addr = 1> {
5368
5368
[(set VR128:$dst,
5369
5369
(X86pinsrb VR128:$src1, GR32orGR64:$src2, timm:$src3))]>,
5370
5370
Sched<[WriteVecInsert, ReadDefault, ReadInt2Fpu]>;
5371
- def rm : SS4AIi8<opc, MRMSrcMem, (outs VR128:$dst),
5371
+ def rmi : SS4AIi8<opc, MRMSrcMem, (outs VR128:$dst),
5372
5372
(ins VR128:$src1, i8mem:$src2, u8imm:$src3),
5373
5373
!if(Is2Addr,
5374
5374
!strconcat(asm, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
@@ -5382,15 +5382,15 @@ multiclass SS41I_insert8<bits<8> opc, string asm, bit Is2Addr = 1> {
5382
5382
let Predicates = [HasAVX, NoBWI] in {
5383
5383
defm VPINSRB : SS41I_insert8<0x20, "vpinsrb", 0>, VEX, VVVV, WIG;
5384
5384
def : Pat<(X86pinsrb VR128:$src1, (i32 (anyext (i8 GR8:$src2))), timm:$src3),
5385
- (VPINSRBrr VR128:$src1, (INSERT_SUBREG (i32 (IMPLICIT_DEF)),
5386
- GR8:$src2, sub_8bit), timm:$src3)>;
5385
+ (VPINSRBrri VR128:$src1, (INSERT_SUBREG (i32 (IMPLICIT_DEF)),
5386
+ GR8:$src2, sub_8bit), timm:$src3)>;
5387
5387
}
5388
5388
5389
5389
let Constraints = "$src1 = $dst" in
5390
5390
defm PINSRB : SS41I_insert8<0x20, "pinsrb">;
5391
5391
5392
5392
multiclass SS41I_insert32<bits<8> opc, string asm, bit Is2Addr = 1> {
5393
- def rr : SS4AIi8<opc, MRMSrcReg, (outs VR128:$dst),
5393
+ def rri : SS4AIi8<opc, MRMSrcReg, (outs VR128:$dst),
5394
5394
(ins VR128:$src1, GR32:$src2, u8imm:$src3),
5395
5395
!if(Is2Addr,
5396
5396
!strconcat(asm, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
@@ -5399,7 +5399,7 @@ multiclass SS41I_insert32<bits<8> opc, string asm, bit Is2Addr = 1> {
5399
5399
[(set VR128:$dst,
5400
5400
(v4i32 (insertelt VR128:$src1, GR32:$src2, imm:$src3)))]>,
5401
5401
Sched<[WriteVecInsert, ReadDefault, ReadInt2Fpu]>;
5402
- def rm : SS4AIi8<opc, MRMSrcMem, (outs VR128:$dst),
5402
+ def rmi : SS4AIi8<opc, MRMSrcMem, (outs VR128:$dst),
5403
5403
(ins VR128:$src1, i32mem:$src2, u8imm:$src3),
5404
5404
!if(Is2Addr,
5405
5405
!strconcat(asm, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
@@ -5416,7 +5416,7 @@ let Constraints = "$src1 = $dst" in
5416
5416
defm PINSRD : SS41I_insert32<0x22, "pinsrd">;
5417
5417
5418
5418
multiclass SS41I_insert64<bits<8> opc, string asm, bit Is2Addr = 1> {
5419
- def rr : SS4AIi8<opc, MRMSrcReg, (outs VR128:$dst),
5419
+ def rri : SS4AIi8<opc, MRMSrcReg, (outs VR128:$dst),
5420
5420
(ins VR128:$src1, GR64:$src2, u8imm:$src3),
5421
5421
!if(Is2Addr,
5422
5422
!strconcat(asm, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
@@ -5425,7 +5425,7 @@ multiclass SS41I_insert64<bits<8> opc, string asm, bit Is2Addr = 1> {
5425
5425
[(set VR128:$dst,
5426
5426
(v2i64 (insertelt VR128:$src1, GR64:$src2, imm:$src3)))]>,
5427
5427
Sched<[WriteVecInsert, ReadDefault, ReadInt2Fpu]>;
5428
- def rm : SS4AIi8<opc, MRMSrcMem, (outs VR128:$dst),
5428
+ def rmi : SS4AIi8<opc, MRMSrcMem, (outs VR128:$dst),
5429
5429
(ins VR128:$src1, i64mem:$src2, u8imm:$src3),
5430
5430
!if(Is2Addr,
5431
5431
!strconcat(asm, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
0 commit comments