The basic building blocks for words in Primitive Elvish were “roots”, also known as “bases” or “stems”, which Tolkien usually designated by putting them in ALLCAPS or by using square root symbol √ (and sometimes both). A “root” consists single vowel (called the base vowel or sundóma) and one or more consonants, in 4 possible arrangements:
1) Uniconsonantal or TA-stem: A single consonant followed by the base vowel.
2) Biconsonantal or KAT-stem: Two consonants with the base vowel between them.
3) Triconsonantal or KALAT-stem: Three consonants with base vowels between them.
4) KALTA-stem: A variant of triconsontal roots, with the base vowel after the first consonant and again at the end.
The first three “shapes” were the original root forms in Primitive Elvish, while the fourth shape emerged as a result of the common phonetic change where a short unstressed vowel was lost in second syllables of triconsonantal forms.
A root was not, by itself, a primitive word, but was a template for forming primitive words. A root provided a unique vocalic and consonantal profile and occupied a particular semantic space, so that words derived from that root all had similar meanings. Words could be derived from roots by adding various suffixes or prefixes, and/or by rearranging the basic sounds of the root.
For example, the root √KAL was associated with the senses “shine; light”, and included primitive words such the verb ✶kal- “to shine” (Q. and S. cal-), ✶kalā “light” (Q. cala). Suffixes produced words like ✶kaltā- “to cause to shine, kindle” (Q. calta-) and ✶kalinā “bright” (Q. calina, S. calen). Just because derived words had related meanings in Primitive Elvish doesn’t mean they retained those meaning in the child languages. Q. calina still meant “bright”, but through semantic drift S. calen came to mean “green”, after Sindarin’s original word for “green” (laeb or laeg) was lost.
Some of the root rearrangements were less obvious, such as the verb ✶akla- “to shine out, flash” (Q. alca-), where the base vowel was suppressed in the middle of the word, and displaced to the beginning instead. It was nevertheless still related to the root √KAL because of its use of the base-vowel a and the consonants k, l. With prefixes and semantic drift, these relationships could become quite obscure. The suppressed form klā, prefixed with the negative prefix ū-, became ✶uklā “gloom, gloomy, (lit.) not bright(ness)” (Q. ulca, S. ogol), but through semantic drift and the influence of other words, it came to primarily mean “evil”.
Some of these variations came to be so strongly associated with new semantic meaning that they essentially became roots of their own. This was the origin of many of the KALTA-stem roots, where KALAT-stems were altered in form to KALTA through vocalic displacement and then came to take on a new meaning. These new roots could then themselves be subject to further prefixion and modification.
Several other mechanisms in root formation were common enough to bear further discussion. The first is consonantal modifications via labialization (adding a w-sound) and palatalization (adding a y-sound, IPA [j]). Labialization happened only to velar consonants: [k, g, ŋ] and (theoretically) [kʰ], whereas palatalization could happen to either velars or dentals: [t, d, n] and (very theoretically) [tʰ]. The results were [kʷ, gʷ, ŋʷ] and [kʲ, gʲ, ŋʲ; tʲ, dʲ, nʲ]. Tolkien generally represented these as kw, gy, ñy; ky, gy, ñy; ty, dy, ny, but they could, in most respects, behave as new consonants themselves in defining roots, such as √KWET “speak” and √TYAL “play”. These modification were used primarily with initial consonants, but could appear elsewhere, such as in the root √NIKW “snow, ice; white” vs. (unrelated) √NIK “small”.
In Quenya, the labialized velars were usually preserved, but in Sindarin they shifted to full labials: ✶kw, gw, ñw > S. p, b, m. Compare Q. quet- “to speak, say” vs. S. ped- (both from √KWET). In Quenya, the palatalized velars became palatalized dentals early on, merging with the original primitive palatalized dentals: ✶ky, gy, ñy > ty, dy, ny > ty, ly, ny. In Sindarin, the palatalization was lost, and these sounds became ordinary dentals and velars, except in the case of ñy which became y instead: ✶ky, gy, ñy; ty, dy, ny > k, g, y; t, d, n. Compare, for example: Q. nyar- “to tell” vs. Sindarin narn “tale” (both from √NYAR) and Q. tyelpe “silver” vs. S. celeb (both from √KYELEP).
Another root-modification mechanism was the strengthening of nasals and stops to produced nasalized stops: b, d, g or m, n, ñ > mb, nd, ñg. These too could be used to form new roots, such as √MBAR “settle, dwell”. For root formation, this change appeared exclusively at the beginning of words, since elsewhere it could be confused with other processes, such as nasal-infixion. In Quenya the nasalized stops became nasals: ✶mb, nd, ñg > Q. m, n, ñ; in Sindarin they became stops: ✶mb, nd, ñg > S. b, d, g. Compare Q. már “home” vs. S. bar.
A third root-modification was s-prefixion, for roots such as √SPAR “hunt”; as with strengthening, this happened exclusively at the beginning of roots. An s-prefixion could occur before voiceless stops, aspirates, nasals and oral continuants: sp, st, sk; sph, sth, skh; sm, sn; sl, sr, sy, sw. In both Quenya and Sindarin, the initial s first unvoiced the following consonant and then was later lost. In the case of voiceless stops, they became aspirates and then (like original primitive aspirates) eventually changed into spirants: [sp, st, sk] > [spʰ, stʰ, skʰ] > [pʰ, tʰ, kʰ] > [f, θ, x], and so had the same development as aspirates in both languages. For oral continuants the results were voiceless l, r, y, w in both Quenya and Sindarin, spelled hr, hl, hy, hw in Quenya but rh, lh, hw in Sindarin; in the case of voiceless initial y it developed into S. h. In the case of nasals, the result was a voiceless nasal, spelled hm, hn, but these nasals were later revoiced in both Quenya and Sindarin, so these cases are only of theoretical interest.
The consonantal modifications of labialization/palatalization could be combined with strengthening/s-prefixion, to produce roots such as √SKYAP “shoe” and √ÑGWAL “torment”. However, s-prefixion could not be combined with strengthening, and also labialization could not be combined with palatalization. Even in the other cases, multiple consonantal modifications were rare (and possibly ultimately abandoned by Tolkien: see PE19/78).
Two final notes.
First, it’s not clear whether the labialized and palatalized consonants were single consonants or consonant clusters: [kʷ] vs. [kw]. In terms of the phonetic evolution of the child languages, it doesn’t seem to have mattered. Even if [kʷ] vs. [kw] were distinct, they nevertheless produced the same result: qu in Quenya and p in Sindarin. This was not true of the earliest forms of the language, where clusters and labialized/palatized consonants could produce distinct results (more on that in another article).
Second, it seems that later in his life (the exact timing is hard to pin down) Tolkien abandoned the idea that labialized dentals could appear in Primitive Elvish: [tʲ, dʲ, nʲ]. Prior to this change, primitive initial [gʲ] produced y in Quenya instead of ly (from gy via dy): compare ᴹQ. yello “call, shout, cry of triumph” vs. N. gell “joy, triumph” (both from ᴹ√GYEL). In terms of Quenya, these labialized dentals could simply be changed to labialized velars, since these produced the same result (e.g. [tʲ, kʲ] > ty). In terms of Sindarin, however, the results were different (e.g. [tʲ, kʲ] > t, c). Furthermore, a few remnants of these older ideas appeared in Tolkien’s later writings, such as Q. nyar- “to tell” and S. narn “tale” (from ᴹ√NYAR in the 1930s but given no derivation later on). For the purposes of Neo-Eldarin, I think its best to ignore this particular change, and assume primitive labialized dentals remain valid.