9. 正規とは!! (2)
X
言語 が正規
,X
はある有限モノイド
M の受理言語
X = L(M )
Saturday, March 31, 12
10. 正規とは!! (2)
X
言語 が正規
,X
はある有限モノイド
M の受理言語
このモノイドは特に
X =Monoid )
Syntactic L(M
と呼ばれる
Saturday, March 31, 12
11. モノイド?(復習)
モノイド M = {S, e, ·}
S : なんかの集合
· : 結合則を満たす二項演算
e 2 S : 単位元
8x 2 S [e · x = x · e = x]
Saturday, March 31, 12
12. モノイド?(復習)
モノイド M = {S, e, ·}
S : なんかの集合
· : 結合則を満たす二項演算
e 2 S : 単位元
8x 2 S [e · x = x · e = x] {N, 0, +}
例えば → 自然数の加算,乗算 {N, 1, ⇥}
Saturday, March 31, 12
13. モノイド?(復習)
モノイド M = {S, e, ·}
S : なんかの集合
· 「単位元のある」半群
: 結合則を満たす二項演算
(単位元なんて飾りです(ぇ)
e 2 S : 単位元
8x 2 S [e · x = x · e = x] {N, 0, +}
例えば → 自然数の加算,乗算 {N, 1, ⇥}
Saturday, March 31, 12
14. モノイドと言語受理
⌧:文字列→モノイドへの準同型写像
⌧: “abaab” 7!a · b · a · a · b
s
文字列 が受理文字列
x
, 受理元 が存在して : ⌧ s 7! x
Saturday, March 31, 12
15. モノイドと言語受理
⌧:文字列→モノイドへの準同型写像
⌧: “abaab” 7!a · b · a · a · b
*注意 文字“a”とモノイド
の元 はベツモノ a
s
文字列 が受理文字列
x
, 受理元 が存在して : ⌧ s 7! x
Saturday, March 31, 12
16. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
Saturday, March 31, 12
17. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa ab ;
a a aa ab a b ;
b b ; ; ; ; ;
aa aa a b aa ab ;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
18. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a a · a = aa
b aa ab ;
a a aa ab a b ;
b b ; ; ; ; ;
aa aa a b aa ab ;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
19. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa · ab
a b =; ab
a a aa ab a b ;
b b ; ; ; ; ;
aa aa a b aa ab ;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
20. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa ab ;
a a aa ab a b ;
b b ; ; ; ; ;
aa aa a b aa ab ;
ab a · aa = a
ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
21. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa ab ;
a a aa ab a b ;
b b ; ; ; ; ;
aa aa a b aa ab ;
ab ab a · ab = b
; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
22. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa ab ;
a a aa ab a b ;
b
aa
b
aa
✏; との二項演算
; ;
a は不変(単位元)
;
b aa ab
;
;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
23. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa ab ;
a a aa ab a b ;
b b ; ; ; ; ;
aa aa a b aa ab ;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
24. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa ab ;
a a aa ab a b ;
b b ; ; ; ;
; との二項演算 ;
aa aa b ;aa ab
a は常に (零元) ;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
25. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
✏ ✏ a b aa ab ;
a a aa ab a b ;
b b ; ; ; ; ;
aa aa a b aa ab ;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
26. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
⌧: ✏ 7! a b7! b
“a” ✏ a , “b” aa ab “”;
, 7! ✏
a a aa ab a b ;
b
b を受理元とすれば!!;
b ; ; ; ;
aa aa a b aa ab ;
ab ab ; ; ; ; ;
; ; ; ; ; ; ;
Saturday, March 31, 12
27. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
⌧: ✏ 7! a b 7! b
“a” ✏ a , “b” aa ab “”; , 7! ✏
a a aa ab a b ;
bbを受理元とすれば!!;
b ; ; ; ;
⌧:“aaaab” 7! a ·ba · aa · a · b = b
aa aa a a ab ;
ab ab ; ; ; ; ;
のように受理文字列が定められ
; ; ; ; ; ; ;
Saturday, March 31, 12
28. M = {{✏, a, b, aa, ab, ;}, ✏, ·}
✏ a b aa ab ;
⌧: ✏ 7! a b 7! b
“a” ✏ a , “b” aa ab “”; , 7! ✏
a a aa ab a b ;
bbを受理元とすれば!!;
b ; ; ; ;
⌧:“aaaab” 7! a ·ba · aa · a · b = b
aa aa a a ab ;
ab ab ; ; ; ; ;
のように受理文字列が定められ
; ; ; ; ; ; ;
L(M ) = L((aa)*b)
Saturday, March 31, 12
29. モノイドわかった?
・この説明では正規表現とモノイドの
具体的関係が良く掴めないと思います
・正規表現から対応するモノイドを
「作る」ことはできる?
Saturday, March 31, 12
32. 正規とは!! (3)
X
言語 が正規
, ある有限オートマトン
A の受理言語
X = L(A)
Saturday, March 31, 12
33. 正規とは!! (3)
X
言語 が正規
, ある有限オートマトン
A の受理言語
X = L(A)
今回はDFAのみが登場
Saturday, March 31, 12
34. DFAの5個組表現(基本)
DFA D = {Q, ⌃, , q0 , F }
Q : 状態集合(有限)
⌃ : 文字集合(有限)
: Q ! Q 遷移関数
q0 : 初期状態
F : 受理状態集合
Saturday, March 31, 12
35. a, b
a
1 b
0 a
b a, b 3
DFA D 2
Q = {0, 1, 2, 3} q0 = 0
⌃ = {a, b} F = {2}
: (0, a) 7! 1, (0, b) 7! 2
···
Saturday, March 31, 12
36. a, b
a
1 b
0 a
b a, b 3
DFA D 2
Saturday, March 31, 12
37. a, b
a
1 b
0 a
b a, b 3
DFA D 2
(0, “aab”) = (1, “ab”) = (0, “b”) = 2
Saturday, March 31, 12
38. a, b
a
1 b
0 a
b a, b 3
DFA D 2
(0, “aab”) = (1, “ab”) = (0, “b”) = 2
(0, “aba”) = (1, “ba”) = (3, “a”) = 3
Saturday, March 31, 12
39. a, b
a
1 b
0 a
b a, b 3
DFA D 2
(0, “aab”) =による文字列 “b”) = 2
DFA D (1, “ab”) = (0, s
(0, “aba”) = (1, “ba”) = (3, “a”) = 3
の受理判定は
(q0 , s) 2 F ?
の判定
Saturday, March 31, 12
40. a, b
a
1 b
0 a
b a, b 3
DFA D 2
(0, “aab”) = (1, “ab”) = (0, “b”) = 2
(0, “aba”) = (1, “ba”) = (3, “a”) = 3
Saturday, March 31, 12
41. a, b
a
1 b
0 a
b a, b 3
DFA D 2
(0, “aab”) = (1, “ab”) = (0, “b”) = 2
(0, “aba”) = (1, “ba”) = (3, “a”) = 3
受理状態に
り着く→受理!!
Saturday, March 31, 12
42. a, b
a
1 b
0 a
b a, b 3
DFA D 2
(0, “aab”) = (1, “ab”) = (0, “b”) = 2
(0, “aba”) = (1, “ba”) = (3, “a”) = 3
L(D) = L((aa)*b)
Saturday, March 31, 12
43. DFAの行列表現(応用)
DF A D = {I, , F }
I : 初期状態ベクトル
: 遷移行列
F : 受理状態ベクトル
Saturday, March 31, 12
44. a, b
a
1 b
0 a
b a, b 3
2
DF A D = {I, , F }
8 0 1 0 19
>
> ; {a} {b} ; 0 >
>
< B{a} C B0C=
; ; {b} C B C
= 1 0 0 0 ,B
@ ; A , @1A>
>
> ; ; {a, b} >
: ;
; ; ; {a, b} 0
Saturday, March 31, 12
45. a, b
a
1 b
0 a
b a, b 3
2
DF A D = {I, , F }
8 初期状態のみ1
0 1 0 19
>
> ; {a} {b} ; 0 >
>
< B{a} C B0C=
; ; {b} C B C
= 1 0 0 0 ,B
@ ; A , @1A>
>
> ; ; {a, b} >
: ;
; ; ; {a, b} 0
Saturday, March 31, 12
46. a, b
a
1 b
0 a
b a, b 3
2
DF A D = {I, , F }
8 0受理状態のみ1 0 19 1
>
> ; {a} {b} ; 0 >
>
< B{a} C B0C=
B ; ; {b} C B C
= 1 0 0 0 ,@ A , @1A>
>
> ; ; ; {a, b} >
: ;
; ; ; {a, b} 0
Saturday, March 31, 12
47. a, b
a
1 b
0 a
b a, b 3
状態0から状態0 2
DF A D = {I, , F }
に遷移する文字はない
8 0 1 0 19
>
> ; {a} {b} ; 0 >
>
< B{a} C B0C=
; ; {b} C B C
= 1 0 0 0 ,B
@ ; A , @1A>
>
> ; ; {a, b} >
: ;
; ; ; {a, b} 0
Saturday, March 31, 12
48. a, b
a
1 b
0 a
b a, b 3
状態0から状態0 状態0から状態1
2
DF A D = {I, , F }
に遷移する文字はない に遷移する文字はa
8 0 1 0 19
>
> ; {a} {b} ; 0 >
>
< B{a} C B0C=
; ; {b} C B C
= 1 0 0 0 ,B
@ ; A , @1A>
>
> ; ; {a, b} >
: ;
; ; ; {a, b} 0
Saturday, March 31, 12
49. a, b
a
1 b
0 a
b a, b 3
2
0 1 0 1
「文字ごと」に遷移行列を
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta 考えてみる (要素は1,0のみ C
=B
@0 0 0 1A
C Tb = B
@0 0 0 1A
0 論理行列) 0 0 1
0 0 1 0
Saturday, March 31, 12
50. a, b
a
1 b
0 a
b a, b 3
2
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B C
@0 0 0 1A @0 0 0 1A
0 0 0 1 0 0 0 1
Saturday, March 31, 12
51. a, b
a
1 b
0 a
b a, b 3
文字aで状態0は 2
状態1に遷移
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B C
@0 0 0 1A @0 0 0 1A
0 0 0 1 0 0 0 1
Saturday, March 31, 12
52. a, b
a
1 b
0 a
b a, b 3
文字aで状態0は 2
状態1に遷移
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B C
@0 0 0 1A @0 0 0 1A
0 0 0 1 0 0 0 1
文字aで状態1は
状態0に遷移
Saturday, March 31, 12
53. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
行列演算で受理判定!!
例題: “aaaab”
Saturday, March 31, 12
54. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
Saturday, March 31, 12
55. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
“aaaab”
Saturday, March 31, 12
56. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
“aaaab”
4
I · T a · Tb · F
Saturday, March 31, 12
57. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
“aaaab”
4
I · T a · Tb · F
2
= I · Ta · T b · F
Saturday, March 31, 12
58. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
“aaaab”
0 1 0 1
4 0 0 1 0 0
I · T a · Tb · F B0
2 0 0 1C B0C
= I · Ta · T b · F = 1 0 0 0 ·B
@0
C·B C
0 0 1A @1A
0 0 0 1 0
Saturday, March 31, 12
59. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
“aaaab”
0 1 0 1
4 0 0 1 0 0
I · T a · Tb · F B0
2 0 0 1C B0C
= I · Ta · T b · F = 1 0 0 0 ·B
@0
C·B C
0 0 1A @1A
0 0 0 1 0
=1
Saturday, March 31, 12
60. I= 1 0 0 0
0 1 0 1 0 1
0 0 1 0 0 0 0 1 0
B0C B1 0 0 0C B0 0 0 1C
F = B C Ta = B0 0 C Tb = B C
@1A @ 0 1A @0 0 0 1A
0 0 0 0 1 0 0 0 1
“aaaab” 結果が1→ 受理
結果が0→ 非受理
0 1 0 1
4 0 0 1 0 0
I · T a · Tb · F B0
2 0 0 1C B0C
= I · Ta · T b · F = 1 0 0 0 ·B
@0
C·B C
0 0 1A @1A
0 0 0 1 0
=1
Saturday, March 31, 12
61. 回帰
先例中の行列積
4
Ta · Tb = Ta · Ta · Ta · Ta · Tb
正方行列同士の積は閉じている
かつ結合則が成り立つ
Saturday, March 31, 12
62. 回帰
先例中の行列積 閉じてる? 結合的演算?
4
Ta · Tb = Ta · Ta · Ta · Ta · Tb
正方行列同士の積は閉じている
かつ結合則が成り立つ
Saturday, March 31, 12
63. 回帰
先例中の行列積 閉じてる? 結合的演算?
4
Ta · Tb = Ta
半群·だっ!!T
·T ·T T ·
a a a b
正方行列同士の積は閉じている
かつ結合則が成り立つ
Saturday, March 31, 12
64. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
この2つの行列が生成する全ての
TD
行列の集合 を計算(遷移閉包)
Saturday, March 31, 12
65. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
この2つの行列が生成する全ての
TD
行列の集合 を計算(遷移閉包)
→ 読者自身で手を動かせ(圧迫)
Saturday, March 31, 12
66. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
Saturday, March 31, 12
67. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
0 1
1 0 0 0
B0 1 0 0C
Ta · Ta = B
@0
C
0 0 1A
0 0 0 1
Saturday, March 31, 12
68. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
Ta · Ta = Ta 2
Saturday, March 31, 12
69. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
0 1
0 0 0 1
B0 0 1 0C
Ta · Ta = Ta 2 Ta · Tb = B
@0
C
0 0 1A
0 0 0 1
Saturday, March 31, 12
70. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
Ta · Ta = Ta 2 Ta · Tb = Tab
Saturday, March 31, 12
71. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
Ta · Ta = Ta 2 Ta · Tb = Tab
2 2
Ta · Ta = Ta · Ta = Ta
Saturday, March 31, 12
72. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
Ta · Ta = Ta 2 Ta · Tb = Tab
2 2 2
Ta · Ta = Ta · Ta = Ta Ta · Tb = Tb
Saturday, March 31, 12
73. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
Ta · Ta = Ta 2 Ta · Tb = Tab
2 2 2
Ta · Ta = Ta · Ta2 = Ta T0 · Tb = Tb
a 13
0 0 0 1
6 B0 0 0 1C7
8x 2 TD 6Tb · x = B
4 @0 0 0
C7
1A5
0 0 0 1
Saturday, March 31, 12
74. 遷移行列が成す半群
0 1 0 1
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B
@0
C
@0 0 0 1A 0 0 1A
0 0 0 1 0 0 0 1
Ta · Ta = Ta 2 Ta · Tb = Tab
2 2 2
Ta · Ta = Ta · Ta = Ta Ta · Tb = Tb
8x 2 TD [Tb · x = T; ]
Saturday, March 31, 12
75. 遷移行列が成す半群
0 1 01
0 1 0 0 0 0 1 0
B1 0 0 0C B0 0 0 1C
Ta = B C Tb = B C
遷移閉包が求まった!!→5つの行列 A
@0 0 0 1A @0 0 0 1
0 0 0 1 0 0 0 1
TD = {Ta , Tb , Taa , Tab , T; }
Ta · Ta = Ta 2 Ta · Tb = Tab
2 2 2
Ta · Ta = Ta · Ta = Ta Ta · Tb = Tb
8x 2 TD [Tb · x = T; ]
Saturday, March 31, 12
77. 半群+単位元=モノイド
0
M = {{I, Ta , Tb , Taa , Tab , T; }, I, ·}
Saturday, March 31, 12
78. 半群+単位元=モノイド
0
M = {{I, Ta , Tb , Taa , Tab , T; }, I, ·}
単位行列を追加
行列積
(もちろん単位元)
Saturday, March 31, 12
79. 半群+単位元=モノイド
0
M = {{I, Ta , Tb , Taa , Tab , T; }, I, ·}
I Ta Tb Taa Tab T;
I I Ta Tb Taa Tab T;
Ta Ta Taa Tab Ta Tb T;
Tb Tb T; T; T; T; T;
Taa Taa Ta Tb Taa Tab T;
Tab Tab T; T; T; T; T;
T; T; T; T; T; T; T;
Saturday, March 31, 12
80. 半群+単位元=モノイド
0
M = {{I, Ta , Tb , Taa , Tab , T; }, I, ·}
I Ta Tb Taa Tab T;
I D
これを のTTransition TMonoid
I a Tb Taa ab T;
Ta Ta Taa Tab Ta Tb T;
Tb Tb
T M (D)
と呼び で表す。;
T; T; T; T; T
(最初のモノイドの表と比べてみて :-)
Taa Taa Ta Tb Taa Tab T;
Tab Tab T; T; T; T; T;
T; T; T; T; T; T; T;
Saturday, March 31, 12
81. 正規とは!! (4)
L(D) = L(M)
となる等価な最小DFA と D
Syntactic Monoid M
について
T M (D) Mは同型
と
([2] p691)
Saturday, March 31, 12
95. gather: 並列表引き[4]
VPGATHERDD (VEX.256 version)
FOR j ← 0 to7
i ・引数3つ
← j * 32;
IF MASK[31+i] THEN
→ DST,SRC1(index&table),SRC2(condition)
MASK[i+31:i] ← 0xFFFFFFFF; // extend from most significant bit
ELSE
MASK[i +31:i] ← 0;
・浮動小数点は vgather, 整数はvpgather
FI;
ENDFOR
FOR j → 7
← 0 to インデックス/値はDword, Qwordを指定
i ← j * 32;
DATA_ADDR ← BASE_ADDR + (SignExtend(VINDEX1[i+31:i])*SCALE + DISP;
→ 2つの元をpack(2byte)して表引き
IF MASK[31+i] THEN
DEST[i +31:i] ← FETCH_32BITS(DATA_ADDR); // a fault exits the loop
→ 任意の二項演算が可(表はもちろん作る)
FI;
MASK[i +31:i] ← 0;
ENDFOR
(non-masked elements of the mask register have the content of respective element cleared)
Saturday, March 31, 12
100. c0 ⇠ c
メモリ上に F それぞれ1byte16個の元
cF cE cD cC cB cA c9 c8 c7 c6 c5 c4 c3 c2 c1 c0
Saturday, March 31, 12
101. c0 ⇠ c
メモリ上に F それぞれ1byte16個の元
cF cE cD cC cB cA c9 c8 c7 c6 c5 c4 c3 c2 c1 c0
*注意 簡略化のため、各要素
ci (i = 1, . . . , F )はそれぞれ
1byteに収まるとし、演算列
は16個に固定
Saturday, March 31, 12
102. c0 ⇠ c
メモリ上に F それぞれ1byte16個の元
cF cE cD cC cB cA c9 c8 c7 c6 c5 c4 c3 c2 c1 c0
(256bit)YMMレジスタに2つずつpack (上位2byteは0)
00cF cE 00cD cC 00cB cA 00c9 c8 00c7 c6 00c5 c4 00c3 c2 00c1 c0
Saturday, March 31, 12
103. c0 ⇠ c
メモリ上に F それぞれ1byte16個の元
cF cE cD cC cB cA c9 c8 c7 c6 c5 c4 c3 c2 c1 c0
(256bit)YMMレジスタに2つずつpack (上位2byteは0)
00cF cE 00cD cC 00cB cA 00c9 c8 00c7 c6 00c5 c4 00c3 c2 00c1 c0
並列表引によって二項演算 (結果上位3byteにゴミが)
00cF cE 00cD cC 00cB cA 00c9 c8 00c7 c6 00c5 c4 00c3 c2 00c1 c0
???c0
7 ???c0
6 ???c0
5 ???c0
4 ???c0
3 ???c0
2 ???c0
1 ???c0
0
Saturday, March 31, 12
104. c0 ⇠ c
メモリ上に F それぞれ1byte16個の元
cF cE cD cC cB cA c9 c8 c7 c6 c5 c4 c3 c2 c1 c0
(256bit)YMMレジスタに2つずつpack (上位2byteは0)
00cF cE 00cD cC 00cB cA 00c9 c8 00c7 c6 00c5 c4 00c3 c2 00c1 c0
並列表引によって二項演算 (結果上位3byteにゴミが)
00cF cE 00cD cC 00cB cA 00c9 c8 00c7 c6 00c5 c4 00c3 c2 00c1 c0
???c0
7 ???c0
6 ???c0
5 ???c0
4 ???c0
3 ???c0
2 ???c0
1 ???c0
0
0000 00c0 c0
7 6 0000 00c0 c0
5 4 0000 00c0 c0
3 2 0000 00c0 c0
1 0
shuffle&permで結果を2つずつpackしなおす(他は0に)
Saturday, March 31, 12
105. c0 ⇠ c
メモリ上に F それぞれ1byte16個の元
cF cE cD cC cB cA c9 c8 c7 c6 c5 c4 c3 c2 c1 c0
(256bit)YMMレジスタに2つずつpack (上位2byteは0)
00cF cE 00cD cC 00cB cA 00c9 c8 00c7 c6 00c5 c4 00c3 c2 00c1 c0
並列表引によって二項演算 (結果上位3byteにゴミが)
00cF cE 00cD cC 00cB cA 00c9 c8 00c7 c6 00c5 c4 00c3 c2 00c1 c0
???c0
7 ???c0
6 ???c0
5 ???c0
4 ???c0
3 ???c0
2 ???c0
1 ???c0
0
0000 00c0 c0
7 6 0000 00c0 c0
5 4 0000 00c0 c0
3 2 0000 00c0 c0
1 0
shuffle&permで結果を2つずつpackしなおす(他は0に)
結果が1つの元になるまで繰り返す!!
Saturday, March 31, 12