Untested code for taking advantage of bilinear sampling and halfing sample amounts.
float3 blur = 0.0; // Always remember to initialize all variables.
//Vertical pass
for (int i = 0; i < cycles; i += 2)
{
float c = 1.0f / (3.14159f * amount);
float e = -(i * i) / (amount);
float falloff = (c * exp(e));
float e2 = -((i+1) * (i+1)) / (amount);
float falloff2 = (c * exp(e2));
float combinedFalloff = falloff + falloff2
float offset = falloff2 / combinedFalloff;
blur += SceneTextureLookup(UV + float2((i + offset) * rx, 0), TexIndex, bFiltered) * combinedFalloff;
blur += SceneTextureLookup(UV - float2((i + offset) * rx, 0), TexIndex, bFiltered) * combinedFalloff;
}