@@ -1327,150 +1327,36 @@ def EmitC_SwitchOp : EmitC_Op<"switch", [RecursiveMemoryEffects,
13271327 Example:
13281328
13291329 ```mlir
1330- // Example for i32:
1331- func.func @emitc_switch_i32() {
1332- %0 = "emitc.variable"(){value = 1 : i32} : () -> i32
1333-
1334- emitc.switch %0 : i32
1335- case 2: {
1336- %1 = emitc.call_opaque "func_b" () : () -> i32
1337- emitc.yield
1338- }
1339- case 5: {
1340- %2 = emitc.call_opaque "func_a" () : () -> i32
1341- emitc.yield
1342- }
1343- default: {
1344- %3 = "emitc.variable"(){value = 42.0 : f32} : () -> f32
1345- %4 = "emitc.variable"(){value = 42.0 : f32} : () -> f32
1346-
1347- emitc.call_opaque "func2" (%3) : (f32) -> ()
1348- emitc.call_opaque "func3" (%3, %4) { args = [1 : index, 0 : index] } : (f32, f32) -> ()
1349- emitc.yield
1350- }
1351- return
1330+ // Example:
1331+ emitc.switch %0 : i32
1332+ case 2: {
1333+ %1 = emitc.call_opaque "func_b" () : () -> i32
1334+ emitc.yield
13521335 }
1353-
1354- // Output for i32:
1355- void emitc_switch_i32() {
1356- int32_t v1 = 1;
1357-
1358- switch (v1) {
1359- case (2): {
1360- int32_t v2 = func_b();
1361- break;
1362- }
1363- case (5): {
1364- int32_t v3 = func_a();
1365- break;
1366- }
1367- default: {
1368- float v4 = 4.200000000e+01f;
1369- float v5 = 4.200000000e+01f;
1370- func2(v4);
1371- func3(v5, v4);
1372- break;
1373- }
1374- return;
1336+ case 5: {
1337+ %2 = emitc.call_opaque "func_a" () : () -> i32
1338+ emitc.yield
13751339 }
1376- ...
1377- // Example for ui16:
1378- func.func @emitc_switch_ui16() {
1379- %0 = "emitc.variable"(){value = 1 : ui16} : () -> ui16
1380-
1381- emitc.switch %0 : ui16
1382- case 2: {
1383- %1 = emitc.call_opaque "func_b" () : () -> i32
1384- emitc.yield
1385- }
1386- case 5: {
1387- %2 = emitc.call_opaque "func_a" () : () -> i32
1388- emitc.yield
1389- }
1390- default: {
1391- %3 = "emitc.variable"(){value = 42.0 : f32} : () -> f32
1392- %4 = "emitc.variable"(){value = 42.0 : f32} : () -> f32
1393-
1394- emitc.call_opaque "func2" (%3) : (f32) -> ()
1395- emitc.call_opaque "func3" (%3, %4) { args = [1 : index, 0 : index] } : (f32, f32) -> ()
1396- emitc.yield
1397- }
1398- return
1340+ default: {
1341+ %3 = "emitc.variable"(){value = 42.0 : f32} : () -> f32
1342+ emitc.call_opaque "func2" (%3) : (f32) -> ()
1343+ emitc.yield
13991344 }
14001345
1401- // Output for ui16:
1402- void emitc_switch_ui16() {
1403- uint16_t v1 = 1;
1404-
1405- switch (v1) {
1406- case (2): {
1407- int32_t v2 = func_b();
1408- break;
1409- }
1410- case (5): {
1411- int32_t v3 = func_a();
1412- break;
1413- }
1414- default: {
1415- float v4 = 4.200000000e+01f;
1416- float v5 = 4.200000000e+01f;
1417- func2(v4);
1418- func3(v5, v4);
1419- break;
1420- }
1421- return;
1346+ // Output:
1347+ switch (v1) {
1348+ case (2): {
1349+ int32_t v2 = func_b();
1350+ break;
14221351 }
1423- ...
1424- // Example for i64 with `-declare-variables-at-top` option:
1425- func.func @emitc_switch_i64() {
1426- %0 = "emitc.variable"(){value = 1 : i64} : () -> i64
1427-
1428- emitc.switch %0 : i64
1429- case 2: {
1430- %1 = emitc.call_opaque "func_b" () : () -> i32
1431- emitc.yield
1432- }
1433- case 5: {
1434- %2 = emitc.call_opaque "func_a" () : () -> i32
1435- emitc.yield
1436- }
1437- default: {
1438- %3 = "emitc.variable"(){value = 42.0 : f32} : () -> f32
1439- %4 = "emitc.variable"(){value = 42.0 : f32} : () -> f32
1440-
1441- emitc.call_opaque "func2" (%3) : (f32) -> ()
1442- emitc.call_opaque "func3" (%3, %4) { args = [1 : index, 0 : index] } : (f32, f32) -> ()
1443- emitc.yield
1444- }
1445- return
1352+ case (5): {
1353+ int32_t v3 = func_a();
1354+ break;
14461355 }
1447-
1448- // Output for i64 with `-declare-variables-at-top` option:
1449- void emitc_switch_i64() {
1450- int64_t v1;
1451- float v2;
1452- float v3;
1453- int32_t v4;
1454- int32_t v5;
1455- v1 = 1;
1456-
1457- switch (v1) {
1458- case (2): {
1459- v4 = func_b();
1460- break;
1461- }
1462- case (5): {
1463- v5 = func_a();
1464- break;
1465- }
1466- default: {
1467- v2 = 4.200000000e+01f;
1468- v3 = 4.200000000e+01f;
1469- func2(v2);
1470- func3(v3, v2);
1471- break;
1472- }
1473- return;
1356+ default: {
1357+ float v4 = 4.200000000e+01f;
1358+ func2(v4);
1359+ break;
14741360 }
14751361 ```
14761362 }];
0 commit comments