Commit dce3a7a42d585b74ce68081010b42afe81c8f4c4
Committed by
NeilBrown
1 parent
ae8fa2831b
Exists in
master
and in
39 other branches
md: drivers/md/unroll.pl replaced with awk analog
drivers/md/unroll.pl replaced by awk script to drop build-time dependency on perl Signed-off-by: Vladimir Dronnikov <dronnikov@gmail.com> Signed-off-by: NeilBrown <neilb@suse.de>
Showing 6 changed files with 54 additions and 58 deletions Side-by-side Diff
drivers/md/Makefile
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 | obj-$(CONFIG_DM_ZERO) += dm-zero.o |
47 | 47 | |
48 | 48 | quiet_cmd_unroll = UNROLL $@ |
49 | - cmd_unroll = $(PERL) $(srctree)/$(src)/unroll.pl $(UNROLL) \ | |
49 | + cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) \ | |
50 | 50 | < $< > $@ || ( rm -f $@ && exit 1 ) |
51 | 51 | |
52 | 52 | ifeq ($(CONFIG_ALTIVEC),y) |
53 | 53 | |
54 | 54 | |
55 | 55 | |
56 | 56 | |
57 | 57 | |
58 | 58 | |
59 | 59 | |
60 | 60 | |
61 | 61 | |
... | ... | @@ -59,56 +59,56 @@ |
59 | 59 | |
60 | 60 | targets += raid6int1.c |
61 | 61 | $(obj)/raid6int1.c: UNROLL := 1 |
62 | -$(obj)/raid6int1.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE | |
62 | +$(obj)/raid6int1.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE | |
63 | 63 | $(call if_changed,unroll) |
64 | 64 | |
65 | 65 | targets += raid6int2.c |
66 | 66 | $(obj)/raid6int2.c: UNROLL := 2 |
67 | -$(obj)/raid6int2.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE | |
67 | +$(obj)/raid6int2.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE | |
68 | 68 | $(call if_changed,unroll) |
69 | 69 | |
70 | 70 | targets += raid6int4.c |
71 | 71 | $(obj)/raid6int4.c: UNROLL := 4 |
72 | -$(obj)/raid6int4.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE | |
72 | +$(obj)/raid6int4.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE | |
73 | 73 | $(call if_changed,unroll) |
74 | 74 | |
75 | 75 | targets += raid6int8.c |
76 | 76 | $(obj)/raid6int8.c: UNROLL := 8 |
77 | -$(obj)/raid6int8.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE | |
77 | +$(obj)/raid6int8.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE | |
78 | 78 | $(call if_changed,unroll) |
79 | 79 | |
80 | 80 | targets += raid6int16.c |
81 | 81 | $(obj)/raid6int16.c: UNROLL := 16 |
82 | -$(obj)/raid6int16.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE | |
82 | +$(obj)/raid6int16.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE | |
83 | 83 | $(call if_changed,unroll) |
84 | 84 | |
85 | 85 | targets += raid6int32.c |
86 | 86 | $(obj)/raid6int32.c: UNROLL := 32 |
87 | -$(obj)/raid6int32.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE | |
87 | +$(obj)/raid6int32.c: $(src)/raid6int.uc $(src)/unroll.awk FORCE | |
88 | 88 | $(call if_changed,unroll) |
89 | 89 | |
90 | 90 | CFLAGS_raid6altivec1.o += $(altivec_flags) |
91 | 91 | targets += raid6altivec1.c |
92 | 92 | $(obj)/raid6altivec1.c: UNROLL := 1 |
93 | -$(obj)/raid6altivec1.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE | |
93 | +$(obj)/raid6altivec1.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE | |
94 | 94 | $(call if_changed,unroll) |
95 | 95 | |
96 | 96 | CFLAGS_raid6altivec2.o += $(altivec_flags) |
97 | 97 | targets += raid6altivec2.c |
98 | 98 | $(obj)/raid6altivec2.c: UNROLL := 2 |
99 | -$(obj)/raid6altivec2.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE | |
99 | +$(obj)/raid6altivec2.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE | |
100 | 100 | $(call if_changed,unroll) |
101 | 101 | |
102 | 102 | CFLAGS_raid6altivec4.o += $(altivec_flags) |
103 | 103 | targets += raid6altivec4.c |
104 | 104 | $(obj)/raid6altivec4.c: UNROLL := 4 |
105 | -$(obj)/raid6altivec4.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE | |
105 | +$(obj)/raid6altivec4.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE | |
106 | 106 | $(call if_changed,unroll) |
107 | 107 | |
108 | 108 | CFLAGS_raid6altivec8.o += $(altivec_flags) |
109 | 109 | targets += raid6altivec8.c |
110 | 110 | $(obj)/raid6altivec8.c: UNROLL := 8 |
111 | -$(obj)/raid6altivec8.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE | |
111 | +$(obj)/raid6altivec8.c: $(src)/raid6altivec.uc $(src)/unroll.awk FORCE | |
112 | 112 | $(call if_changed,unroll) |
113 | 113 | |
114 | 114 | quiet_cmd_mktable = TABLE $@ |
drivers/md/raid6altivec.uc
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | * |
16 | 16 | * $#-way unrolled portable integer math RAID-6 instruction set |
17 | 17 | * |
18 | - * This file is postprocessed using unroll.pl | |
18 | + * This file is postprocessed using unroll.awk | |
19 | 19 | * |
20 | 20 | * <benh> hpa: in process, |
21 | 21 | * you can just "steal" the vec unit with enable_kernel_altivec() (but |
drivers/md/raid6int.uc
drivers/md/raid6test/Makefile
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | OPTFLAGS = -O2 # Adjust as desired |
8 | 8 | CFLAGS = -I.. -I ../../../include -g $(OPTFLAGS) |
9 | 9 | LD = ld |
10 | -PERL = perl | |
10 | +AWK = awk | |
11 | 11 | AR = ar |
12 | 12 | RANLIB = ranlib |
13 | 13 | |
14 | 14 | |
15 | 15 | |
16 | 16 | |
17 | 17 | |
18 | 18 | |
19 | 19 | |
20 | 20 | |
21 | 21 | |
22 | 22 | |
... | ... | @@ -35,35 +35,35 @@ |
35 | 35 | raid6test: test.c raid6.a |
36 | 36 | $(CC) $(CFLAGS) -o raid6test $^ |
37 | 37 | |
38 | -raid6altivec1.c: raid6altivec.uc ../unroll.pl | |
39 | - $(PERL) ../unroll.pl 1 < raid6altivec.uc > $@ | |
38 | +raid6altivec1.c: raid6altivec.uc ../unroll.awk | |
39 | + $(AWK) ../unroll.awk -vN=1 < raid6altivec.uc > $@ | |
40 | 40 | |
41 | -raid6altivec2.c: raid6altivec.uc ../unroll.pl | |
42 | - $(PERL) ../unroll.pl 2 < raid6altivec.uc > $@ | |
41 | +raid6altivec2.c: raid6altivec.uc ../unroll.awk | |
42 | + $(AWK) ../unroll.awk -vN=2 < raid6altivec.uc > $@ | |
43 | 43 | |
44 | -raid6altivec4.c: raid6altivec.uc ../unroll.pl | |
45 | - $(PERL) ../unroll.pl 4 < raid6altivec.uc > $@ | |
44 | +raid6altivec4.c: raid6altivec.uc ../unroll.awk | |
45 | + $(AWK) ../unroll.awk -vN=4 < raid6altivec.uc > $@ | |
46 | 46 | |
47 | -raid6altivec8.c: raid6altivec.uc ../unroll.pl | |
48 | - $(PERL) ../unroll.pl 8 < raid6altivec.uc > $@ | |
47 | +raid6altivec8.c: raid6altivec.uc ../unroll.awk | |
48 | + $(AWK) ../unroll.awk -vN=8 < raid6altivec.uc > $@ | |
49 | 49 | |
50 | -raid6int1.c: raid6int.uc ../unroll.pl | |
51 | - $(PERL) ../unroll.pl 1 < raid6int.uc > $@ | |
50 | +raid6int1.c: raid6int.uc ../unroll.awk | |
51 | + $(AWK) ../unroll.awk -vN=1 < raid6int.uc > $@ | |
52 | 52 | |
53 | -raid6int2.c: raid6int.uc ../unroll.pl | |
54 | - $(PERL) ../unroll.pl 2 < raid6int.uc > $@ | |
53 | +raid6int2.c: raid6int.uc ../unroll.awk | |
54 | + $(AWK) ../unroll.awk -vN=2 < raid6int.uc > $@ | |
55 | 55 | |
56 | -raid6int4.c: raid6int.uc ../unroll.pl | |
57 | - $(PERL) ../unroll.pl 4 < raid6int.uc > $@ | |
56 | +raid6int4.c: raid6int.uc ../unroll.awk | |
57 | + $(AWK) ../unroll.awk -vN=4 < raid6int.uc > $@ | |
58 | 58 | |
59 | -raid6int8.c: raid6int.uc ../unroll.pl | |
60 | - $(PERL) ../unroll.pl 8 < raid6int.uc > $@ | |
59 | +raid6int8.c: raid6int.uc ../unroll.awk | |
60 | + $(AWK) ../unroll.awk -vN=8 < raid6int.uc > $@ | |
61 | 61 | |
62 | -raid6int16.c: raid6int.uc ../unroll.pl | |
63 | - $(PERL) ../unroll.pl 16 < raid6int.uc > $@ | |
62 | +raid6int16.c: raid6int.uc ../unroll.awk | |
63 | + $(AWK) ../unroll.awk -vN=16 < raid6int.uc > $@ | |
64 | 64 | |
65 | -raid6int32.c: raid6int.uc ../unroll.pl | |
66 | - $(PERL) ../unroll.pl 32 < raid6int.uc > $@ | |
65 | +raid6int32.c: raid6int.uc ../unroll.awk | |
66 | + $(AWK) ../unroll.awk -vN=32 < raid6int.uc > $@ | |
67 | 67 | |
68 | 68 | raid6tables.c: mktables |
69 | 69 | ./mktables > raid6tables.c |
drivers/md/unroll.awk
1 | + | |
2 | +# This filter requires one command line option of form -vN=n | |
3 | +# where n must be a decimal number. | |
4 | +# | |
5 | +# Repeat each input line containing $$ n times, replacing $$ with 0...n-1. | |
6 | +# Replace each $# with n, and each $* with a single $. | |
7 | + | |
8 | +BEGIN { | |
9 | + n = N + 0 | |
10 | +} | |
11 | +{ | |
12 | + if (/\$\$/) { rep = n } else { rep = 1 } | |
13 | + for (i = 0; i < rep; ++i) { | |
14 | + tmp = $0 | |
15 | + gsub(/\$\$/, i, tmp) | |
16 | + gsub(/\$\#/, n, tmp) | |
17 | + gsub(/\$\*/, "$", tmp) | |
18 | + print tmp | |
19 | + } | |
20 | +} |
drivers/md/unroll.pl
1 | -#!/usr/bin/perl | |
2 | -# | |
3 | -# Take a piece of C code and for each line which contains the sequence $$ | |
4 | -# repeat n times with $ replaced by 0...n-1; the sequence $# is replaced | |
5 | -# by the unrolling factor, and $* with a single $ | |
6 | -# | |
7 | - | |
8 | -($n) = @ARGV; | |
9 | -$n += 0; | |
10 | - | |
11 | -while ( defined($line = <STDIN>) ) { | |
12 | - if ( $line =~ /\$\$/ ) { | |
13 | - $rep = $n; | |
14 | - } else { | |
15 | - $rep = 1; | |
16 | - } | |
17 | - for ( $i = 0 ; $i < $rep ; $i++ ) { | |
18 | - $tmp = $line; | |
19 | - $tmp =~ s/\$\$/$i/g; | |
20 | - $tmp =~ s/\$\#/$n/g; | |
21 | - $tmp =~ s/\$\*/\$/g; | |
22 | - print $tmp; | |
23 | - } | |
24 | -} |