Skip to content

Commit a351fb0

Browse files
committed
Move comments
1 parent 1f0f01b commit a351fb0

File tree

5 files changed

+58
-0
lines changed

5 files changed

+58
-0
lines changed

llvm/lib/Target/LoongArch/LoongArchFloat32InstrInfo.td

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,18 @@ def SDT_LoongArchFRSQRTE : SDTypeProfile<1, 1, [SDTCisFP<0>, SDTCisFP<1>]>;
3030
// ISD::BRCOND is custom-lowered to LoongArchISD::BRCOND for floating-point
3131
// comparisons to prevent recursive lowering.
3232
def loongarch_brcond : SDNode<"LoongArchISD::BRCOND", SDTBrcond, [SDNPHasChain]>;
33+
34+
// FPR<->GPR transfer operations
3335
def loongarch_movgr2fr_w
3436
: SDNode<"LoongArchISD::MOVGR2FR_W", SDT_LoongArchMOVGR2FR_W>;
3537
def loongarch_movgr2fr_w_la64
3638
: SDNode<"LoongArchISD::MOVGR2FR_W_LA64", SDT_LoongArchMOVGR2FR_W_LA64>;
3739
def loongarch_movfr2gr_s_la64
3840
: SDNode<"LoongArchISD::MOVFR2GR_S_LA64", SDT_LoongArchMOVFR2GR_S_LA64>;
41+
3942
def loongarch_ftint : SDNode<"LoongArchISD::FTINT", SDT_LoongArchFTINT>;
43+
44+
// Floating point approximate reciprocal operation
4045
def loongarch_frecipe : SDNode<"LoongArchISD::FRECIPE", SDT_LoongArchFRECIPE>;
4146
def loongarch_frsqrte : SDNode<"LoongArchISD::FRSQRTE", SDT_LoongArchFRSQRTE>;
4247

llvm/lib/Target/LoongArch/LoongArchFloat64InstrInfo.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def SDT_LoongArchMOVGR2FR_D_LO_HI
2020
: SDTypeProfile<1, 2, [SDTCisVT<0, f64>, SDTCisVT<1, i32>,
2121
SDTCisSameAs<1, 2>]>;
2222

23+
// FPR<->GPR transfer operations
2324
def loongarch_movgr2fr_d
2425
: SDNode<"LoongArchISD::MOVGR2FR_D", SDT_LoongArchMOVGR2FR_D>;
2526
def loongarch_movgr2fr_d_lo_hi

llvm/lib/Target/LoongArch/LoongArchInstrInfo.td

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,22 @@ def loongarch_tail_large : SDNode<"LoongArchISD::TAIL_LARGE", SDT_LoongArchCall,
100100
def loongarch_selectcc : SDNode<"LoongArchISD::SELECT_CC", SDT_LoongArchSelectCC>;
101101
def loongarch_brcc : SDNode<"LoongArchISD::BR_CC", SDT_LoongArchBrCC,
102102
[SDNPHasChain]>;
103+
104+
// 32-bit shifts, directly matching the semantics of the named LoongArch
105+
// instructions.
103106
def loongarch_sll_w : SDNode<"LoongArchISD::SLL_W", SDT_LoongArchIntBinOpW>;
104107
def loongarch_sra_w : SDNode<"LoongArchISD::SRA_W", SDT_LoongArchIntBinOpW>;
105108
def loongarch_srl_w : SDNode<"LoongArchISD::SRL_W", SDT_LoongArchIntBinOpW>;
109+
106110
def loongarch_rotr_w : SDNode<"LoongArchISD::ROTR_W", SDT_LoongArchIntBinOpW>;
111+
112+
// unsigned 32-bit integer division
107113
def loongarch_div_w : SDNode<"LoongArchISD::DIV_W", SDT_LoongArchIntBinOpW>;
108114
def loongarch_div_wu : SDNode<"LoongArchISD::DIV_WU", SDT_LoongArchIntBinOpW>;
109115
def loongarch_mod_w : SDNode<"LoongArchISD::MOD_W", SDT_LoongArchIntBinOpW>;
110116
def loongarch_mod_wu : SDNode<"LoongArchISD::MOD_WU", SDT_LoongArchIntBinOpW>;
117+
118+
// CRC check operations
111119
def loongarch_crc_w_b_w
112120
: SDNode<"LoongArchISD::CRC_W_B_W", SDT_LoongArchIntBinOpW, [SDNPHasChain]>;
113121
def loongarch_crc_w_h_w
@@ -124,37 +132,63 @@ def loongarch_crcc_w_w_w : SDNode<"LoongArchISD::CRCC_W_W_W",
124132
SDT_LoongArchIntBinOpW, [SDNPHasChain]>;
125133
def loongarch_crcc_w_d_w : SDNode<"LoongArchISD::CRCC_W_D_W",
126134
SDT_LoongArchIntBinOpW, [SDNPHasChain]>;
135+
127136
def loongarch_bstrins
128137
: SDNode<"LoongArchISD::BSTRINS", SDT_LoongArchBStrIns>;
129138
def loongarch_bstrpick
130139
: SDNode<"LoongArchISD::BSTRPICK", SDT_LoongArchBStrPick>;
140+
141+
// Byte-swapping and bit-reversal
131142
def loongarch_revb_2h : SDNode<"LoongArchISD::REVB_2H", SDTUnaryOp>;
132143
def loongarch_revb_2w : SDNode<"LoongArchISD::REVB_2W", SDTUnaryOp>;
133144
def loongarch_bitrev_4b : SDNode<"LoongArchISD::BITREV_4B", SDTUnaryOp>;
134145
def loongarch_bitrev_8b : SDNode<"LoongArchISD::BITREV_8B", SDTUnaryOp>;
135146
def loongarch_bitrev_w : SDNode<"LoongArchISD::BITREV_W", SDTUnaryOp>;
147+
148+
// Bit counting operations
136149
def loongarch_clzw : SDNode<"LoongArchISD::CLZ_W", SDTIntBitCountUnaryOp>;
137150
def loongarch_ctzw : SDNode<"LoongArchISD::CTZ_W", SDTIntBitCountUnaryOp>;
151+
138152
def loongarch_dbar : SDNode<"LoongArchISD::DBAR", SDT_LoongArchVI,
139153
[SDNPHasChain, SDNPSideEffect]>;
140154
def loongarch_ibar : SDNode<"LoongArchISD::IBAR", SDT_LoongArchVI,
141155
[SDNPHasChain, SDNPSideEffect]>;
142156
def loongarch_break : SDNode<"LoongArchISD::BREAK", SDT_LoongArchVI,
143157
[SDNPHasChain, SDNPSideEffect]>;
158+
159+
// FPR<->GPR transfer operations
144160
def loongarch_movfcsr2gr : SDNode<"LoongArchISD::MOVFCSR2GR",
145161
SDT_LoongArchMovfcsr2gr, [SDNPHasChain]>;
146162
def loongarch_movgr2fcsr : SDNode<"LoongArchISD::MOVGR2FCSR",
147163
SDT_LoongArchMovgr2fcsr,
148164
[SDNPHasChain, SDNPSideEffect]>;
165+
149166
def loongarch_syscall : SDNode<"LoongArchISD::SYSCALL", SDT_LoongArchVI,
150167
[SDNPHasChain, SDNPSideEffect]>;
151168
def loongarch_csrrd : SDNode<"LoongArchISD::CSRRD", SDT_LoongArchCsrrd,
152169
[SDNPHasChain, SDNPSideEffect]>;
170+
171+
// Write new value to CSR and return old value.
172+
// Operand 0: A chain pointer.
173+
// Operand 1: The new value to write.
174+
// Operand 2: The address of the required CSR.
175+
// Result 0: The old value of the CSR.
176+
// Result 1: The new chain pointer.
153177
def loongarch_csrwr : SDNode<"LoongArchISD::CSRWR", SDT_LoongArchCsrwr,
154178
[SDNPHasChain, SDNPSideEffect]>;
179+
180+
// Similar to CSRWR but with a write mask.
181+
// Operand 0: A chain pointer.
182+
// Operand 1: The new value to write.
183+
// Operand 2: The write mask.
184+
// Operand 3: The address of the required CSR.
185+
// Result 0: The old value of the CSR.
186+
// Result 1: The new chain pointer.
155187
def loongarch_csrxchg : SDNode<"LoongArchISD::CSRXCHG",
156188
SDT_LoongArchCsrxchg,
157189
[SDNPHasChain, SDNPSideEffect]>;
190+
191+
// IOCSR access operations
158192
def loongarch_iocsrrd_b : SDNode<"LoongArchISD::IOCSRRD_B", SDTUnaryOp,
159193
[SDNPHasChain, SDNPSideEffect]>;
160194
def loongarch_iocsrrd_h : SDNode<"LoongArchISD::IOCSRRD_H", SDTUnaryOp,
@@ -175,9 +209,12 @@ def loongarch_iocsrwr_w : SDNode<"LoongArchISD::IOCSRWR_W",
175209
def loongarch_iocsrwr_d : SDNode<"LoongArchISD::IOCSRWR_D",
176210
SDT_LoongArchIocsrwr,
177211
[SDNPHasChain, SDNPSideEffect]>;
212+
213+
// Read CPU configuration information operation
178214
def loongarch_cpucfg : SDNode<"LoongArchISD::CPUCFG", SDTUnaryOp,
179215
[SDNPHasChain]>;
180216

217+
// Build and split F64 pair
181218
def loongarch_build_pair_f64 : SDNode<"LoongArchISD::BUILD_PAIR_F64",
182219
SDT_LoongArchBuildPairF64>;
183220
def loongarch_split_pair_f64 : SDNode<"LoongArchISD::SPLIT_PAIR_F64",

llvm/lib/Target/LoongArch/LoongArchLASXInstrInfo.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@ def SDT_LoongArchXVREPLVE0 : SDTypeProfile<1, 1, [SDTCisVec<0>,
1616
SDTCisSameAs<0, 1>]>;
1717

1818
// Target nodes.
19+
20+
// Vector Shuffle
1921
def loongarch_xvpermi: SDNode<"LoongArchISD::XVPERMI", SDT_LoongArchV1RUimm>;
2022
def loongarch_xvperm: SDNode<"LoongArchISD::XVPERM", SDT_LoongArchXVPERM>;
2123
def loongarch_xvreplve0: SDNode<"LoongArchISD::XVREPLVE0", SDT_LoongArchXVREPLVE0>;
2224
def loongarch_xvreplve0q: SDNode<"LoongArchISD::XVREPLVE0Q", SDT_LoongArchXVREPLVE0>;
2325
def loongarch_xvinsve0 : SDNode<"LoongArchISD::XVINSVE0", SDT_LoongArchV2RUimm>;
26+
27+
// Vector mask set by condition
2428
def loongarch_xvmskltz: SDNode<"LoongArchISD::XVMSKLTZ", SDT_LoongArchVMSKCOND>;
2529
def loongarch_xvmskgez: SDNode<"LoongArchISD::XVMSKGEZ", SDT_LoongArchVMSKCOND>;
2630
def loongarch_xvmskeqz: SDNode<"LoongArchISD::XVMSKEQZ", SDT_LoongArchVMSKCOND>;

llvm/lib/Target/LoongArch/LoongArchLSXInstrInfo.td

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ def SDT_LoongArchVLDREPL : SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisPtrTy<1>]>;
3434
def SDT_LoongArchVMSKCOND : SDTypeProfile<1, 1, [SDTCisInt<0>, SDTCisVec<1>]>;
3535

3636
// Target nodes.
37+
38+
// Vector Shuffle
3739
def loongarch_vreplve : SDNode<"LoongArchISD::VREPLVE", SDT_LoongArchVreplve>;
40+
41+
// Vector comparisons
3842
def loongarch_vall_nonzero : SDNode<"LoongArchISD::VALL_NONZERO",
3943
SDT_LoongArchVecCond>;
4044
def loongarch_vany_nonzero : SDNode<"LoongArchISD::VANY_NONZERO",
@@ -44,11 +48,13 @@ def loongarch_vall_zero : SDNode<"LoongArchISD::VALL_ZERO",
4448
def loongarch_vany_zero : SDNode<"LoongArchISD::VANY_ZERO",
4549
SDT_LoongArchVecCond>;
4650

51+
// Extended vector element extraction
4752
def loongarch_vpick_sext_elt : SDNode<"LoongArchISD::VPICK_SEXT_ELT",
4853
SDTypeProfile<1, 3, [SDTCisPtrTy<2>]>>;
4954
def loongarch_vpick_zext_elt : SDNode<"LoongArchISD::VPICK_ZEXT_ELT",
5055
SDTypeProfile<1, 3, [SDTCisPtrTy<2>]>>;
5156

57+
// Vector Shuffle
5258
def loongarch_vshuf: SDNode<"LoongArchISD::VSHUF", SDT_LoongArchVShuf>;
5359
def loongarch_vpickev: SDNode<"LoongArchISD::VPICKEV", SDT_LoongArchV2R>;
5460
def loongarch_vpickod: SDNode<"LoongArchISD::VPICKOD", SDT_LoongArchV2R>;
@@ -65,18 +71,23 @@ def loongarch_vreplgr2vr: SDNode<"LoongArchISD::VREPLGR2VR", SDT_LoongArchVreplg
6571
def loongarch_vfrecipe: SDNode<"LoongArchISD::FRECIPE", SDT_LoongArchVFRECIPE>;
6672
def loongarch_vfrsqrte: SDNode<"LoongArchISD::FRSQRTE", SDT_LoongArchVFRSQRTE>;
6773

74+
// Vector logicial left / right shift by immediate
6875
def loongarch_vslli : SDNode<"LoongArchISD::VSLLI", SDT_LoongArchV1RUimm>;
6976
def loongarch_vsrli : SDNode<"LoongArchISD::VSRLI", SDT_LoongArchV1RUimm>;
7077

78+
// Vector byte logicial left / right shift
7179
def loongarch_vbsll : SDNode<"LoongArchISD::VBSLL", SDT_LoongArchV1RUimm>;
7280
def loongarch_vbsrl : SDNode<"LoongArchISD::VBSRL", SDT_LoongArchV1RUimm>;
7381

82+
// Vector Horizontal Addition with Widening
7483
def loongarch_vhaddw : SDNode<"LoongArchISD::VHADDW", SDT_LoongArchV2R>;
7584

85+
// Scalar load broadcast to vector
7686
def loongarch_vldrepl
7787
: SDNode<"LoongArchISD::VLDREPL",
7888
SDT_LoongArchVLDREPL, [SDNPHasChain, SDNPMayLoad, SDNPMemOperand]>;
7989

90+
// Vector mask set by condition
8091
def loongarch_vmskltz: SDNode<"LoongArchISD::VMSKLTZ", SDT_LoongArchVMSKCOND>;
8192
def loongarch_vmskgez: SDNode<"LoongArchISD::VMSKGEZ", SDT_LoongArchVMSKCOND>;
8293
def loongarch_vmskeqz: SDNode<"LoongArchISD::VMSKEQZ", SDT_LoongArchVMSKCOND>;

0 commit comments

Comments
 (0)