Skip to content

Commit a595989

Browse files
committed
minor tidyup
The float vector array frobs can also be macroised, at least for now. When we actually start having instruction sequences in the generator, we might need to unmacroize them, or else find a way of allowing the defining form to have a reader and a writer instruction sequence
1 parent 76186a4 commit a595989

File tree

1 file changed

+16
-39
lines changed

1 file changed

+16
-39
lines changed

src/compiler/rv32/array.lisp

Lines changed: 16 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -60,42 +60,19 @@
6060
(def-small-data-vector-frobs simple-array-unsigned-byte-2 2)
6161
(def-small-data-vector-frobs simple-array-unsigned-byte-4 4))
6262

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

Comments
 (0)