Skip to content

Commit 4e6a9fc

Browse files
authored
Hexagon: Add memw_phys, l2gclean* instructions (llvm#72420)
1 parent 4eaf3a9 commit 4e6a9fc

File tree

4 files changed

+430
-73
lines changed

4 files changed

+430
-73
lines changed

llvm/lib/Target/Hexagon/HexagonDepIICScalar.td

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ def tc_788b1d09 : InstrItinClass;
117117
def tc_78f87ed3 : InstrItinClass;
118118
def tc_7af3a37e : InstrItinClass;
119119
def tc_7b9187d3 : InstrItinClass;
120+
def tc_7c28bd7e : InstrItinClass;
120121
def tc_7c31e19a : InstrItinClass;
121122
def tc_7c6d32e4 : InstrItinClass;
122123
def tc_7d6a2568 : InstrItinClass;
@@ -212,6 +213,7 @@ def tc_e3d699e3 : InstrItinClass;
212213
def tc_e60def48 : InstrItinClass;
213214
def tc_e9170fb7 : InstrItinClass;
214215
def tc_ed03645c : InstrItinClass;
216+
def tc_ed3f8d2a : InstrItinClass;
215217
def tc_eed07714 : InstrItinClass;
216218
def tc_eeda4109 : InstrItinClass;
217219
def tc_ef921005 : InstrItinClass;
@@ -869,6 +871,10 @@ class DepScalarItinV55 {
869871
[InstrStage<1, [SLOT0]>], [3, 2],
870872
[Hex_FWD, Hex_FWD]>,
871873

874+
InstrItinData <tc_7c28bd7e, /*tc_st*/
875+
[InstrStage<1, [SLOT0]>], [3],
876+
[Hex_FWD]>,
877+
872878
InstrItinData <tc_7c31e19a, /*tc_st*/
873879
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
874880
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -1237,6 +1243,10 @@ class DepScalarItinV55 {
12371243
[InstrStage<1, [SLOT2]>], [3, 1],
12381244
[Hex_FWD, Hex_FWD]>,
12391245

1246+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
1247+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
1248+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
1249+
12401250
InstrItinData <tc_eed07714, /*tc_ld*/
12411251
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
12421252
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -1737,6 +1747,10 @@ class DepScalarItinV60 {
17371747
[InstrStage<1, [SLOT0]>], [3, 2],
17381748
[Hex_FWD, Hex_FWD]>,
17391749

1750+
InstrItinData <tc_7c28bd7e, /*tc_st*/
1751+
[InstrStage<1, [SLOT0]>], [3],
1752+
[Hex_FWD]>,
1753+
17401754
InstrItinData <tc_7c31e19a, /*tc_st*/
17411755
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
17421756
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -2625,6 +2639,10 @@ class DepScalarItinV60se {
26252639
InstrStage<1, [CVI_ST]>], [3, 2],
26262640
[Hex_FWD, Hex_FWD]>,
26272641

2642+
InstrItinData <tc_7c28bd7e, /*tc_st*/
2643+
[InstrStage<1, [SLOT0]>], [3],
2644+
[Hex_FWD]>,
2645+
26282646
InstrItinData <tc_7c31e19a, /*tc_st*/
26292647
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
26302648
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -3004,6 +3022,10 @@ class DepScalarItinV60se {
30043022
InstrStage<1, [CVI_ST]>], [3, 1],
30053023
[Hex_FWD, Hex_FWD]>,
30063024

3025+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
3026+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
3027+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
3028+
30073029
InstrItinData <tc_eed07714, /*tc_ld*/
30083030
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
30093031
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -3509,6 +3531,10 @@ class DepScalarItinV62 {
35093531
[InstrStage<1, [SLOT0]>], [3, 2],
35103532
[Hex_FWD, Hex_FWD]>,
35113533

3534+
InstrItinData <tc_7c28bd7e, /*tc_st*/
3535+
[InstrStage<1, [SLOT0]>], [3],
3536+
[Hex_FWD]>,
3537+
35123538
InstrItinData <tc_7c31e19a, /*tc_st*/
35133539
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
35143540
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -3877,6 +3903,10 @@ class DepScalarItinV62 {
38773903
[InstrStage<1, [SLOT2]>], [3, 1],
38783904
[Hex_FWD, Hex_FWD]>,
38793905

3906+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
3907+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
3908+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
3909+
38803910
InstrItinData <tc_eed07714, /*tc_ld*/
38813911
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
38823912
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -4381,6 +4411,10 @@ class DepScalarItinV65 {
43814411
[InstrStage<1, [SLOT0]>], [3, 2],
43824412
[Hex_FWD, Hex_FWD]>,
43834413

4414+
InstrItinData <tc_7c28bd7e, /*tc_st*/
4415+
[InstrStage<1, [SLOT0]>], [3],
4416+
[Hex_FWD]>,
4417+
43844418
InstrItinData <tc_7c31e19a, /*tc_st*/
43854419
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
43864420
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -4757,6 +4791,10 @@ class DepScalarItinV65 {
47574791
[InstrStage<1, [SLOT2]>], [3, 2],
47584792
[Hex_FWD, Hex_FWD]>,
47594793

4794+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
4795+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
4796+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
4797+
47604798
InstrItinData <tc_eed07714, /*tc_ld*/
47614799
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
47624800
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -5261,6 +5299,10 @@ class DepScalarItinV66 {
52615299
[InstrStage<1, [SLOT0]>], [3, 2],
52625300
[Hex_FWD, Hex_FWD]>,
52635301

5302+
InstrItinData <tc_7c28bd7e, /*tc_st*/
5303+
[InstrStage<1, [SLOT0]>], [3],
5304+
[Hex_FWD]>,
5305+
52645306
InstrItinData <tc_7c31e19a, /*tc_st*/
52655307
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
52665308
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -5637,6 +5679,10 @@ class DepScalarItinV66 {
56375679
[InstrStage<1, [SLOT2]>], [3, 2],
56385680
[Hex_FWD, Hex_FWD]>,
56395681

5682+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
5683+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
5684+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
5685+
56405686
InstrItinData <tc_eed07714, /*tc_ld*/
56415687
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
56425688
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -6141,6 +6187,10 @@ class DepScalarItinV67 {
61416187
[InstrStage<1, [SLOT0]>], [3, 2],
61426188
[Hex_FWD, Hex_FWD]>,
61436189

6190+
InstrItinData <tc_7c28bd7e, /*tc_st*/
6191+
[InstrStage<1, [SLOT0]>], [3],
6192+
[Hex_FWD]>,
6193+
61446194
InstrItinData <tc_7c31e19a, /*tc_st*/
61456195
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
61466196
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -6521,6 +6571,10 @@ class DepScalarItinV67 {
65216571
[InstrStage<1, [SLOT2]>], [3, 2],
65226572
[Hex_FWD, Hex_FWD]>,
65236573

6574+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
6575+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
6576+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
6577+
65246578
InstrItinData <tc_eed07714, /*tc_ld*/
65256579
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
65266580
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -7025,6 +7079,10 @@ class DepScalarItinV67T {
70257079
[InstrStage<1, [SLOT0]>], [3, 2],
70267080
[Hex_FWD, Hex_FWD]>,
70277081

7082+
InstrItinData <tc_7c28bd7e, /*tc_st*/
7083+
[InstrStage<1, [SLOT0]>], [3],
7084+
[Hex_FWD]>,
7085+
70287086
InstrItinData <tc_7c31e19a, /*tc_st*/
70297087
[InstrStage<1, [SLOT0]>], [1, 2, 2],
70307088
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -7401,6 +7459,10 @@ class DepScalarItinV67T {
74017459
[InstrStage<1, [SLOT2]>], [3, 2],
74027460
[Hex_FWD, Hex_FWD]>,
74037461

7462+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
7463+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
7464+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
7465+
74047466
InstrItinData <tc_eed07714, /*tc_ld*/
74057467
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
74067468
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -7905,6 +7967,10 @@ class DepScalarItinV68 {
79057967
[InstrStage<1, [SLOT0]>], [3, 2],
79067968
[Hex_FWD, Hex_FWD]>,
79077969

7970+
InstrItinData <tc_7c28bd7e, /*tc_st*/
7971+
[InstrStage<1, [SLOT0]>], [3],
7972+
[Hex_FWD]>,
7973+
79087974
InstrItinData <tc_7c31e19a, /*tc_st*/
79097975
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
79107976
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -8281,6 +8347,10 @@ class DepScalarItinV68 {
82818347
[InstrStage<1, [SLOT2]>], [3, 2],
82828348
[Hex_FWD, Hex_FWD]>,
82838349

8350+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
8351+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
8352+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
8353+
82848354
InstrItinData <tc_eed07714, /*tc_ld*/
82858355
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
82868356
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -8785,6 +8855,10 @@ class DepScalarItinV69 {
87858855
[InstrStage<1, [SLOT0]>], [3, 2],
87868856
[Hex_FWD, Hex_FWD]>,
87878857

8858+
InstrItinData <tc_7c28bd7e, /*tc_st*/
8859+
[InstrStage<1, [SLOT0]>], [3],
8860+
[Hex_FWD]>,
8861+
87888862
InstrItinData <tc_7c31e19a, /*tc_st*/
87898863
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
87908864
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -9161,6 +9235,10 @@ class DepScalarItinV69 {
91619235
[InstrStage<1, [SLOT2]>], [3, 2],
91629236
[Hex_FWD, Hex_FWD]>,
91639237

9238+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
9239+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
9240+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
9241+
91649242
InstrItinData <tc_eed07714, /*tc_ld*/
91659243
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
91669244
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -9665,6 +9743,10 @@ class DepScalarItinV71 {
96659743
[InstrStage<1, [SLOT0]>], [3, 2],
96669744
[Hex_FWD, Hex_FWD]>,
96679745

9746+
InstrItinData <tc_7c28bd7e, /*tc_st*/
9747+
[InstrStage<1, [SLOT0]>], [3],
9748+
[Hex_FWD]>,
9749+
96689750
InstrItinData <tc_7c31e19a, /*tc_st*/
96699751
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
96709752
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -10041,6 +10123,10 @@ class DepScalarItinV71 {
1004110123
[InstrStage<1, [SLOT2]>], [3, 2],
1004210124
[Hex_FWD, Hex_FWD]>,
1004310125

10126+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
10127+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
10128+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
10129+
1004410130
InstrItinData <tc_eed07714, /*tc_ld*/
1004510131
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
1004610132
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -10545,6 +10631,10 @@ class DepScalarItinV71T {
1054510631
[InstrStage<1, [SLOT0]>], [3, 2],
1054610632
[Hex_FWD, Hex_FWD]>,
1054710633

10634+
InstrItinData <tc_7c28bd7e, /*tc_st*/
10635+
[InstrStage<1, [SLOT0]>], [3],
10636+
[Hex_FWD]>,
10637+
1054810638
InstrItinData <tc_7c31e19a, /*tc_st*/
1054910639
[InstrStage<1, [SLOT0]>], [1, 2, 2],
1055010640
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -10921,6 +11011,10 @@ class DepScalarItinV71T {
1092111011
[InstrStage<1, [SLOT2]>], [3, 2],
1092211012
[Hex_FWD, Hex_FWD]>,
1092311013

11014+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
11015+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
11016+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
11017+
1092411018
InstrItinData <tc_eed07714, /*tc_ld*/
1092511019
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
1092611020
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -11425,6 +11519,10 @@ class DepScalarItinV73 {
1142511519
[InstrStage<1, [SLOT0]>], [3, 2],
1142611520
[Hex_FWD, Hex_FWD]>,
1142711521

11522+
InstrItinData <tc_7c28bd7e, /*tc_st*/
11523+
[InstrStage<1, [SLOT0]>], [3],
11524+
[Hex_FWD]>,
11525+
1142811526
InstrItinData <tc_7c31e19a, /*tc_st*/
1142911527
[InstrStage<1, [SLOT0, SLOT1]>], [1, 2, 2],
1143011528
[Hex_FWD, Hex_FWD, Hex_FWD]>,
@@ -11801,6 +11899,10 @@ class DepScalarItinV73 {
1180111899
[InstrStage<1, [SLOT2]>], [3, 2],
1180211900
[Hex_FWD, Hex_FWD]>,
1180311901

11902+
InstrItinData <tc_ed3f8d2a, /*tc_ld*/
11903+
[InstrStage<1, [SLOT0]>], [4, 1, 1],
11904+
[Hex_FWD, Hex_FWD, Hex_FWD]>,
11905+
1180411906
InstrItinData <tc_eed07714, /*tc_ld*/
1180511907
[InstrStage<1, [SLOT0, SLOT1]>], [4, 1, 2],
1180611908
[Hex_FWD, Hex_FWD, Hex_FWD]>,

llvm/lib/Target/Hexagon/HexagonDepInstrFormats.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,6 +1255,10 @@ class Enc_58a8bf : OpcodeHexagon {
12551255
bits <5> Rx32;
12561256
let Inst{20-16} = Rx32{4-0};
12571257
}
1258+
class Enc_598f6c : OpcodeHexagon {
1259+
bits <5> Rtt32;
1260+
let Inst{12-8} = Rtt32{4-0};
1261+
}
12581262
class Enc_5a18b3 : OpcodeHexagon {
12591263
bits <11> Ii;
12601264
let Inst{21-20} = Ii{10-9};

llvm/lib/Target/Hexagon/HexagonDepInstrInfo.td

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12455,6 +12455,20 @@ let isExtentSigned = 0;
1245512455
let opExtentBits = 6;
1245612456
let opExtentAlign = 0;
1245712457
}
12458+
def L4_loadw_phys : HInst<
12459+
(outs IntRegs:$Rd32),
12460+
(ins IntRegs:$Rs32, IntRegs:$Rt32),
12461+
"$Rd32 = memw_phys($Rs32,$Rt32)",
12462+
tc_ed3f8d2a, TypeLD>, Enc_5ab2be {
12463+
let Inst{7-5} = 0b000;
12464+
let Inst{13-13} = 0b1;
12465+
let Inst{31-21} = 0b10010010000;
12466+
let hasNewValue = 1;
12467+
let opNewValue = 0;
12468+
let accessSize = WordAccess;
12469+
let mayLoad = 1;
12470+
let isSolo = 1;
12471+
}
1245812472
def L4_or_memopb_io : HInst<
1245912473
(outs),
1246012474
(ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
@@ -41165,6 +41179,26 @@ let opNewValue = 0;
4116541179
let hasSideEffects = 1;
4116641180
let isSolo = 1;
4116741181
}
41182+
def Y6_l2gcleaninvpa : HInst<
41183+
(outs),
41184+
(ins DoubleRegs:$Rtt32),
41185+
"l2gcleaninv($Rtt32)",
41186+
tc_7c28bd7e, TypeST>, Enc_598f6c {
41187+
let Inst{7-0} = 0b00000000;
41188+
let Inst{13-13} = 0b0;
41189+
let Inst{31-16} = 0b1010011011000000;
41190+
let isSolo = 1;
41191+
}
41192+
def Y6_l2gcleanpa : HInst<
41193+
(outs),
41194+
(ins DoubleRegs:$Rtt32),
41195+
"l2gclean($Rtt32)",
41196+
tc_7c28bd7e, TypeST>, Enc_598f6c {
41197+
let Inst{7-0} = 0b00000000;
41198+
let Inst{13-13} = 0b0;
41199+
let Inst{31-16} = 0b1010011010100000;
41200+
let isSolo = 1;
41201+
}
4116841202
def dep_A2_addsat : HInst<
4116941203
(outs IntRegs:$Rd32),
4117041204
(ins IntRegs:$Rs32, IntRegs:$Rt32),

0 commit comments

Comments
 (0)