Skip to content

Compare

Matt Windsor edited this page Nov 6, 2018 · 2 revisions

The compare command takes a C file, runs every compiler against it, and prints each generated litmus test, in Markdown, on standard output.

Example command

$ act compare -no-warnings ../memalloy/results/_latest/C/test_5.c

Example output

(Output slightly adjusted for the wiki, but is otherwise correct at time of writing.)

../memalloy/results/_latest/C/test_5.c

local.clang.x86

P0                  | P1                  ;
movl [t0sZM4], 2    | movl [t1sZM4], 2    ;
movl EAX, [t0sZM4]  | movl EAX, [t1sZM4]  ;
xchg [ZUx], EAX     | xchg [ZUy], EAX     ;
movl [t0sZM8], 1    | movl [t1sZM8], 1    ;
movl ECX, [t0sZM8]  | movl ECX, [t1sZM8]  ;
xchg [ZUy], ECX     | xchg [ZUx], ECX     ;
movl [t0sZM12], EAX | movl [t1sZM12], EAX ;
movl [t0sZM16], ECX | movl [t1sZM16], ECX ;

local.gcc.x86.O3

P0            | P1            ;
movl [ZUx], 2 | movl [ZUy], 2 ;
mfence        | mfence        ;
movl [ZUy], 1 | movl [ZUx], 1 ;
mfence        | mfence        ;

local.gcc.x86.normal

P0                  | P1                  ;
movl [t0sZM4], ZUx  | movl [t1sZM4], ZUy  ;
movl [t0sZM12], 2   | movl [t1sZM12], 2   ;
movl EAX, [t0sZM12] | movl EAX, [t1sZM12] ;
movl EDX, EAX       | movl EDX, EAX       ;
movl EAX, [t0sZM4]  | movl EAX, [t1sZM4]  ;
movl [EAX], EDX     | movl [EAX], EDX     ;
mfence              | mfence              ;
movl [t0sZM8], ZUy  | movl [t1sZM8], ZUx  ;
movl [t0sZM16], 1   | movl [t1sZM16], 1   ;
movl EAX, [t0sZM16] | movl EAX, [t1sZM16] ;
movl EDX, EAX       | movl EDX, EAX       ;
movl EAX, [t0sZM8]  | movl EAX, [t1sZM8]  ;
movl [EAX], EDX     | movl [EAX], EDX     ;
mfence              | mfence              ;
Clone this wiki locally