The thing I would suggest is use the size descriptors for the first operand.
movlps qword ptr [rdx], xmm7
Because you are dereferencing a memory location (that is what the  does, it says to access the memory location specified in rdx) the assembler doesn't know the size of the memory block you are pointing to. So you have to give the assembler the size of this memory location. The qword ptr tells it that it is pointing to a qword block of memory (that is quad word or 8 byte, which is the same size as half of xmm7).
A similar thing is true for movss. Except that in this case you would need to use dword ptr instead of qword ptr. So modify this line to.
movss dword ptr [rdx+8], xmm6
Oh, and if you are going to give a sample please make sure that it will give only the problem you describe. Your sample will actually give two more errors. The first is on the line
and the second is on the line
This is because test is an instruction and instructions take priority over identifiers. So instead of seeing the proc and thinking test is a name of a procedure, it will see test think that it is an instruction and expect two valid parameters for it.