123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- { %CPU=x86_64 }
- { %norun }
- // (Almost) every of these instructions use a high register and thus generate REX.
- {$asmmode att}
- procedure test; assembler; nostackframe;
- asm
- addsubpd 0x12345678(%rip),%xmm8
- addsubps 0x12345678(%rip),%xmm8
- comisd 0x12345678(%rip),%xmm8
- comiss 0x12345678(%rip),%xmm8
- cvtdq2pd 0x12345678(%rip),%xmm8
- cvtpd2dq 0x12345678(%rip),%xmm8
- cvtps2pd 0x12345678(%rip),%xmm8
- cvttps2dq 0x12345678(%rip),%xmm8
- cvtsi2ss %eax, %xmm8
- cvtsi2ssl %eax, %xmm8
- cvtsi2ss %rax, %xmm8
- cvtsi2ssq %rax, %xmm8
- cvtsi2ss (%rax), %xmm8
- cvtsi2ssl (%rax), %xmm8
- cvtsi2ssq (%rax), %xmm8
- cvtsi2sd %eax, %xmm8
- cvtsi2sdl %eax, %xmm8
- cvtsi2sd %rax, %xmm8
- cvtsi2sdq %rax, %xmm8
- cvtsi2sd (%rax), %xmm8
- cvtsi2sdl (%rax), %xmm8
- cvtsi2sdq (%rax), %xmm8
- movdqu %xmm8,0x12345678(%rip)
- movdqu 0x12345678(%rip),%xmm8
- movdqa %xmm8,0x12345678(%rip)
- movdqa 0x12345678(%rip),%xmm8
- haddps 0x12345678(%rip),%xmm8
- haddpd 0x12345678(%rip),%xmm8
- movshdup 0x12345678(%rip),%xmm8
- movsldup 0x12345678(%rip),%xmm8
- movhpd %xmm8,0x12345678(%rip)
- movhpd 0x12345678(%rip),%xmm8
- movhps %xmm8,0x12345678(%rip)
- movhps 0x12345678(%rip),%xmm8
- movlpd %xmm8,0x12345678(%rip)
- movlpd 0x12345678(%rip),%xmm8
- movlps %xmm8,0x12345678(%rip)
- movlps 0x12345678(%rip),%xmm8
- pshufhw $0x90,0x12345678(%rip),%xmm1 { Fixed: unable to determine size }
- pshuflw $0x90,0x12345678(%rip),%xmm1
- punpcklbw 0x12345678(%rip),%mm1
- punpckldq 0x12345678(%rip),%mm1
- punpcklwd 0x12345678(%rip),%mm1
- punpcklbw 0x12345678(%rip),%xmm8
- punpckldq 0x12345678(%rip),%xmm8
- punpcklwd 0x12345678(%rip),%xmm8
- punpcklqdq 0x12345678(%rip),%xmm8
- ucomisd 0x12345678(%rip),%xmm8
- ucomiss 0x12345678(%rip),%xmm8
- cmpeqsd (%rax),%xmm8
- cmpeqss (%rax),%xmm8
- cvtpi2pd %mm0,%xmm8
- cvtpi2pd (%rax),%xmm8
- cvtpi2ps %mm0,%xmm8
- cvtpi2ps (%rax),%xmm8
- cvtps2pi (%r8),%mm0
- cvtsd2si (%r8),%eax
- cvtsd2siq (%r8),%rax
- cvttsd2si (%r8),%eax
- cvttsd2siq (%r8),%rax
- cvtsd2ss (%r8),%xmm0
- cvtss2sd (%r8),%xmm0
- cvtss2si (%r8),%eax
- cvtss2siq (%r8),%rax
- cvttss2si (%r8),%eax
- cvttss2siq (%r8),%rax
- divsd (%rax),%xmm8
- divss (%rax),%xmm8
- maxsd (%rax),%xmm8
- maxss (%rax),%xmm8
- minss (%rax),%xmm8
- minss (%rax),%xmm8
- movntsd %xmm8,(%rax)
- movntss %xmm8,(%rax)
- movss (%rax),%xmm8
- movss %xmm8,(%rax)
- mulsd (%rax),%xmm8
- mulss (%rax),%xmm8
- rcpss (%rax),%xmm8
- rcpps (%rax),%xmm8
- roundsd $0,(%rax),%xmm8 { (Fixed) unable to determine size }
- roundss $0,(%rax),%xmm8
- rsqrtss (%rax),%xmm8
- rsqrtps (%rax),%xmm8
- sqrtsd (%rax),%xmm8
- sqrtss (%rax),%xmm8
- sqrtpd (%rax),%xmm8
- sqrtps (%rax),%xmm8
- subsd (%rax),%xmm8
- subss (%rax),%xmm8
- pmovsxbw (%rax),%xmm8
- pmovsxbd (%rax),%xmm8
- pmovsxbq (%rax),%xmm8
- pmovsxwd (%rax),%xmm8
- pmovsxwq (%rax),%xmm8
- pmovsxdq (%rax),%xmm8
- pmovzxbw (%rax),%xmm8
- pmovzxbd (%rax),%xmm8
- pmovzxbq (%rax),%xmm8
- pmovzxwd (%rax),%xmm8
- pmovzxwq (%rax),%xmm8
- pmovzxdq (%rax),%xmm8
- insertps $0x0,(%rax),%xmm8 { (Fixed) unable to determine size }
- unpckhpd (%rax),%xmm8 { (Fixed) invalid combination of opcode and operands }
- unpckhps (%rax),%xmm8
- unpcklpd (%rax),%xmm8
- unpcklps (%rax),%xmm8
- cmpss $0x10,%xmm7,%xmm6
- cmpss $0x10,(%rax),%xmm7 { (Fixed) unable to determine size }
- paddq %mm1,%mm0
- paddq (%rax),%mm0
- paddq %xmm1,%xmm0
- paddq (%rax),%xmm0
- psubq %mm1,%mm0
- psubq (%rax),%mm0
- psubq %xmm1,%xmm0
- psubq (%rax),%xmm0
- pmuludq %mm1,%mm0
- pmuludq (%rax),%mm0
- pmuludq %xmm1,%xmm0
- pmuludq (%rax),%xmm0
- addps (%r8),%xmm0
- addss (%r8),%xmm0
- pmulhuw (%r8),%xmm0
- psadbw (%r8), %xmm0
- end;
- // Here are some more tough nuts to crack...
- procedure test2; assembler; nostackframe;
- asm
- // movq %xmm1,0x12345678(%rip) { converted to mov, invalid combination of opcode and operands }
- // movq 0x12345678(%rip),%xmm1
- // cmpsd $0x10,%xmm7,%xmm6 { unrecognized opcode }
- // cmpsd $0x10,(%rax),%xmm7
- // movsd (%rax),%xmm8 { unrecognized opcode }
- // movsd %xmm8,(%rax)
- end;
- begin
- end.
|