File: tasm3.pp

package info (click to toggle)
fpc 2.6.4%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 178,760 kB
  • ctags: 83,946
  • sloc: pascal: 2,000,374; xml: 138,807; ansic: 9,617; asm: 7,843; yacc: 3,747; php: 3,271; sh: 2,626; makefile: 2,610; lex: 2,537; sql: 267; cpp: 145; sed: 132; perl: 126; csh: 34; tcl: 7
file content (26 lines) | stat: -rw-r--r-- 495 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{ %CPU=x86_64 }

// Basic test for 3-operand SIMD instructions with rip-relative operand

{$codealign varmin=16}
{$codealign constmin=16}
type
  tvec=array[0..3] of longword;

var
  t: tvec = ($00010203, $04050607, $08090a0b, $0c0d0e0f);

{$asmmode att}
function test: word; assembler; nostackframe;
asm
     pshufd   $0b11100100,t(%rip),%xmm0       // direct copy
     pcmpeqd  t(%rip),%xmm0
     pmovmskb %xmm0,%eax
end;

begin
  if test<>65535 then
    Halt(1)
  else
    writeln('ok');
end.