|
60 | 60 | (def-small-data-vector-frobs simple-array-unsigned-byte-2 2) |
61 | 61 | (def-small-data-vector-frobs simple-array-unsigned-byte-4 4)) |
62 | 62 |
|
63 | | -(define-vop (data-vector-set/simple-array-single-float) |
64 | | - (:translate data-vector-set) |
65 | | - (:args (object :scs (descriptor-reg)) |
66 | | - (index :scs (unsigned-reg)) |
67 | | - (value :scs (single-reg))) |
68 | | - (:arg-types simple-array-single-float positive-fixnum single-float) |
69 | | - (:results (result :scs (single-reg))) |
70 | | - (:result-types single-float) |
71 | | - (:generator 5)) |
72 | | - |
73 | | -(define-vop (data-vector-set/simple-array-double-float) |
74 | | - (:translate data-vector-set) |
75 | | - (:args (object :scs (descriptor-reg)) |
76 | | - (index :scs (unsigned-reg)) |
77 | | - (value :scs (double-reg))) |
78 | | - (:arg-types simple-array-double-float positive-fixnum double-float) |
79 | | - (:results (result :scs (double-reg))) |
80 | | - (:result-types double-float) |
81 | | - (:generator 5)) |
82 | | - |
83 | | -(define-vop (data-vector-set/simple-array-complex-single-float) |
84 | | - (:translate data-vector-set) |
85 | | - (:args (object :scs (descriptor-reg)) |
86 | | - (index :scs (unsigned-reg)) |
87 | | - (value :scs (complex-single-reg))) |
88 | | - (:arg-types simple-array-complex-single-float positive-fixnum complex-single-float) |
89 | | - (:results (result :scs (complex-single-reg))) |
90 | | - (:result-types complex-single-float) |
91 | | - (:generator 5)) |
92 | | - |
93 | | -(define-vop (data-vector-set/simple-array-complex-double-float) |
94 | | - (:translate data-vector-set) |
95 | | - (:args (object :scs (descriptor-reg)) |
96 | | - (index :scs (unsigned-reg)) |
97 | | - (value :scs (complex-double-reg))) |
98 | | - (:arg-types simple-array-complex-double-float positive-fixnum complex-double-float) |
99 | | - (:results (result :scs (complex-double-reg))) |
100 | | - (:result-types complex-double-float) |
101 | | - (:generator 5)) |
| 63 | +(macrolet ((def-float-vector-frobs (type eltype sc) |
| 64 | + (let ((setname (symbolicate "DATA-VECTOR-SET/" type))) |
| 65 | + `(progn |
| 66 | + (define-vop (,setname) |
| 67 | + (:translate data-vector-set) |
| 68 | + (:args (object :scs (descriptor-reg)) |
| 69 | + (index :scs (unsigned-reg)) |
| 70 | + (value :scs (,sc))) |
| 71 | + (:arg-types ,type positive-fixnum ,eltype) |
| 72 | + (:results (result :scs (,sc))) |
| 73 | + (:result-types ,eltype) |
| 74 | + (:generator 5)))))) |
| 75 | + (def-float-vector-frobs simple-array-single-float single-float single-reg) |
| 76 | + (def-float-vector-frobs simple-array-double-float double-float double-reg) |
| 77 | + (def-float-vector-frobs simple-array-complex-single-float complex-single-float complex-single-reg) |
| 78 | + (def-float-vector-frobs simple-array-complex-double-float complex-double-float complex-double-reg)) |
0 commit comments