@@ -98,14 +98,42 @@ function buildFromBinaryExpression(
9898 builder : llvm . IRBuilder
9999) : llvm . Value {
100100 switch ( expr . operator ) {
101- case '+' :
101+ case '+' : {
102102 const left = buildFromExpression ( expr . left , ctx , builder ) ;
103103 const right = buildFromExpression ( expr . right , ctx , builder ) ;
104104
105105 return builder . createFAdd (
106106 loadIfNeeded ( left , builder , ctx ) ,
107107 loadIfNeeded ( right , builder , ctx )
108108 ) ;
109+ }
110+ case '-' : {
111+ const left = buildFromExpression ( expr . left , ctx , builder ) ;
112+ const right = buildFromExpression ( expr . right , ctx , builder ) ;
113+
114+ return builder . createFSub (
115+ loadIfNeeded ( left , builder , ctx ) ,
116+ loadIfNeeded ( right , builder , ctx )
117+ ) ;
118+ }
119+ case '*' : {
120+ const left = buildFromExpression ( expr . left , ctx , builder ) ;
121+ const right = buildFromExpression ( expr . right , ctx , builder ) ;
122+
123+ return builder . createFMul (
124+ loadIfNeeded ( left , builder , ctx ) ,
125+ loadIfNeeded ( right , builder , ctx )
126+ ) ;
127+ }
128+ case '/' : {
129+ const left = buildFromExpression ( expr . left , ctx , builder ) ;
130+ const right = buildFromExpression ( expr . right , ctx , builder ) ;
131+
132+ return builder . createFDiv (
133+ loadIfNeeded ( left , builder , ctx ) ,
134+ loadIfNeeded ( right , builder , ctx )
135+ ) ;
136+ }
109137 default :
110138 throw new Error (
111139 `Unsupported BinaryExpression.operator: "${ expr . type } "`
0 commit comments