Raymond Toy pushed to branch rtoy-use-ssse3-insts at cmucl / cmucl

Commits:

5 changed files:

Changes:

  • .gitlab-ci.yml
    1 1
     variables:
    
    2 2
       download_url: "https://common-lisp.net/project/cmucl/downloads/snapshots/2020/04"
    
    3 3
       version: "2020-04-x86"
    
    4
    -  bootstrap: ""
    
    4
    +  bootstrap: "-B boot-2020-04"
    
    5 5
     
    
    6 6
     linux-runner:
    
    7 7
       tags:
    

  • src/bootfiles/21d/boot-2020-04.lisp
    ... ... @@ -2,4 +2,6 @@
    2 2
     #+x86
    
    3 3
     (pushnew :sse3 *features*)
    
    4 4
     #+x86
    
    5
    -(pushnew :ssse3 *features*)
    \ No newline at end of file
    5
    +(pushnew :ssse3 *features*)
    
    6
    +#+x86
    
    7
    +(pushnew :sse4 *features*)

  • src/code/x86-vm.lisp
    ... ... @@ -42,12 +42,21 @@
    42 42
       (setf *features* (delete :x87 *features*))
    
    43 43
       (sys:register-lisp-feature :sse2))
    
    44 44
     
    
    45
    +#+sse3
    
    46
    +(progn
    
    47
    +  (setf *features* (delete :x87 *features*))
    
    48
    +  (sys:register-lisp-feature :sse3))
    
    49
    +
    
    45 50
     #+ssse3
    
    46 51
     (progn
    
    47 52
       (setf *features* (delete :x87 *features*))
    
    48
    -  (sys:register-lisp-feature :sse3)
    
    49 53
       (sys:register-lisp-feature :ssse3))
    
    50 54
     
    
    55
    +#+sse4
    
    56
    +(progn
    
    57
    +  (setf *features* (delete :x87 *features*))
    
    58
    +  (sys:register-lisp-feature :sse4))
    
    59
    +
    
    51 60
     #+(or darwin linux)
    
    52 61
     (sys:register-lisp-runtime-feature :relocatable-stacks)
    
    53 62
     
    

  • src/compiler/x86/arith.lisp
    ... ... @@ -964,7 +964,7 @@
    964 964
       (:arg-types unsigned-num)
    
    965 965
       (:results (result :scs (unsigned-reg)))
    
    966 966
       (:result-types positive-fixnum)
    
    967
    -  (:guard (backend-featurep :sse3))
    
    967
    +  (:guard (backend-featurep :sse4))
    
    968 968
       (:generator 2
    
    969 969
         (inst popcnt result arg)))
    
    970 970
     
    

  • src/compiler/x86/insts.lisp
    ... ... @@ -3201,6 +3201,7 @@
    3201 3201
       (define-regular-sse-inst paddq #x66 #xd4)
    
    3202 3202
       )
    
    3203 3203
     
    
    3204
    +;; SSE4 instruction
    
    3204 3205
     (define-instruction popcnt (segment dst src)
    
    3205 3206
       (:printer ext-reg-reg/mem
    
    3206 3207
     	    ((prefix #xf3) (op #xb8)))