Can a reaction accept more than one reagent without requiring all of them?
You can do this with either [REACTION_CLASS] or [MATERIAL_REACTION_PRODUCT]. I think the latter would work better for you in this situation.
In the diamond material files, add something like [MATERIAL_REACTION_PRODUCT:GEM_WEAPON_MAT:INORGANIC:PRECIOUS_GEM_WEAPON_MATERIAL]
GEM_WEAPON_MAT is just the name you'll use to call this later. INORGANIC:PRECIOUS_GEM_WEAPON_MATERIAL would need to be the material token for the material your weapons will be made out of.
You'd add a similar line to the other gems you want to be useable, with INORGANIC:SEMIPRECIOUS_GEM_WEAPON_MATERIAL and INORGANIC:ORNAMENTAL_GEM_WEAPON_MATERIAL where you want them.
In your reaction, you'd have -
[REAGENT:gem:1:SMALLGEM:NONE:NONE:NONE][HAS_MATERIAL_REACTION_PRODUCT:GEM_WEAPON_MAT]
[PRODUCT:100:1:BAR:NONE:GET_MATERIAL_FROM_REAGENT:gem:GEM_WEAPON_MAT]
For the reagent line, if you would rather require an uncut gem, use ROUGH instead of SMALLGEM - or if you want to be able to use ANYTHING made out of a material with the GEM_WEAPON material reaction product just use NONE instead of SMALLGEM (though this would also use, for example, diamond windows).
You could skip a step and instead of making a bar of the gem metal, go straight to a specific weapon with [PRODUCT:100:1:WEAPON:ITEM_WEAPON_SHORT_SWORD:GET_MATERIAL_FROM_REAGENT:gem:GEM_WEAPON_MAT]
EDIT: Typo in reagent line, oops