921 lines · plain
1// RUN: mlir-translate -mlir-to-cpp %s | FileCheck --match-full-lines %s -check-prefix=CPP-DEFAULT2// RUN: mlir-translate -mlir-to-cpp -declare-variables-at-top %s | FileCheck --match-full-lines %s -check-prefix=CPP-DECLTOP3 4// CPP-DEFAULT-LABEL: void emitc_switch_ptrdiff_t() {5// CPP-DEFAULT: ptrdiff_t v1 = 1;6// CPP-DEFAULT: switch (v1) {7// CPP-DEFAULT: case 2: {8// CPP-DEFAULT: int32_t v2 = func_b();9// CPP-DEFAULT: break;10// CPP-DEFAULT: }11// CPP-DEFAULT: case 5: {12// CPP-DEFAULT: int32_t v3 = func_a();13// CPP-DEFAULT: break;14// CPP-DEFAULT: }15// CPP-DEFAULT: default: {16// CPP-DEFAULT: float v4 = 4.200000000e+01f;17// CPP-DEFAULT: func2(v4);18// CPP-DEFAULT: break;19// CPP-DEFAULT: }20// CPP-DEFAULT: }21// CPP-DEFAULT: return;22// CPP-DEFAULT: }23 24// CPP-DECLTOP-LABEL: void emitc_switch_ptrdiff_t() {25// CPP-DECLTOP: ptrdiff_t v1;26// CPP-DECLTOP: float v2;27// CPP-DECLTOP: int32_t v3;28// CPP-DECLTOP: int32_t v4;29// CPP-DECLTOP: v1 = 1;30// CPP-DECLTOP: switch (v1) {31// CPP-DECLTOP: case 2: {32// CPP-DECLTOP: v3 = func_b();33// CPP-DECLTOP: break;34// CPP-DECLTOP: }35// CPP-DECLTOP: case 5: {36// CPP-DECLTOP: v4 = func_a();37// CPP-DECLTOP: break;38// CPP-DECLTOP: }39// CPP-DECLTOP: default: {40// CPP-DECLTOP: v2 = 4.200000000e+01f;41// CPP-DECLTOP: func2(v2);42// CPP-DECLTOP: break;43// CPP-DECLTOP: }44// CPP-DECLTOP: }45// CPP-DECLTOP: return;46// CPP-DECLTOP: }47func.func @emitc_switch_ptrdiff_t() {48 %0 = "emitc.constant"(){value = 1 : index} : () -> !emitc.ptrdiff_t49 50 emitc.switch %0 : !emitc.ptrdiff_t51 case 2 {52 %1 = emitc.call_opaque "func_b" () : () -> i3253 emitc.yield54 }55 case 5 {56 %2 = emitc.call_opaque "func_a" () : () -> i3257 emitc.yield58 }59 default {60 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f3261 emitc.call_opaque "func2" (%3) : (f32) -> ()62 }63 return64}65 66// CPP-DEFAULT-LABEL: void emitc_switch_ssize_t() {67// CPP-DEFAULT: ssize_t v1 = 1;68// CPP-DEFAULT: switch (v1) {69// CPP-DEFAULT: case 2: {70// CPP-DEFAULT: int32_t v2 = func_b();71// CPP-DEFAULT: break;72// CPP-DEFAULT: }73// CPP-DEFAULT: case 5: {74// CPP-DEFAULT: int32_t v3 = func_a();75// CPP-DEFAULT: break;76// CPP-DEFAULT: }77// CPP-DEFAULT: default: {78// CPP-DEFAULT: float v4 = 4.200000000e+01f;79// CPP-DEFAULT: func2(v4);80// CPP-DEFAULT: break;81// CPP-DEFAULT: }82// CPP-DEFAULT: }83// CPP-DEFAULT: return;84// CPP-DEFAULT: }85 86// CPP-DECLTOP-LABEL: void emitc_switch_ssize_t() {87// CPP-DECLTOP: ssize_t v1;88// CPP-DECLTOP: float v2;89// CPP-DECLTOP: int32_t v3;90// CPP-DECLTOP: int32_t v4;91// CPP-DECLTOP: v1 = 1;92// CPP-DECLTOP: switch (v1) {93// CPP-DECLTOP: case 2: {94// CPP-DECLTOP: v3 = func_b();95// CPP-DECLTOP: break;96// CPP-DECLTOP: }97// CPP-DECLTOP: case 5: {98// CPP-DECLTOP: v4 = func_a();99// CPP-DECLTOP: break;100// CPP-DECLTOP: }101// CPP-DECLTOP: default: {102// CPP-DECLTOP: v2 = 4.200000000e+01f;103// CPP-DECLTOP: func2(v2);104// CPP-DECLTOP: break;105// CPP-DECLTOP: }106// CPP-DECLTOP: }107// CPP-DECLTOP: return;108// CPP-DECLTOP: }109func.func @emitc_switch_ssize_t() {110 %0 = "emitc.constant"(){value = 1 : index} : () -> !emitc.ssize_t111 112 emitc.switch %0 : !emitc.ssize_t113 case 2 {114 %1 = emitc.call_opaque "func_b" () : () -> i32115 emitc.yield116 }117 case 5 {118 %2 = emitc.call_opaque "func_a" () : () -> i32119 emitc.yield120 }121 default {122 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32123 emitc.call_opaque "func2" (%3) : (f32) -> ()124 emitc.yield125 }126 return127}128 129// CPP-DEFAULT-LABEL: void emitc_switch_size_t() {130// CPP-DEFAULT: size_t v1 = 1;131// CPP-DEFAULT: switch (v1) {132// CPP-DEFAULT: case 2: {133// CPP-DEFAULT: int32_t v2 = func_b();134// CPP-DEFAULT: break;135// CPP-DEFAULT: }136// CPP-DEFAULT: case 5: {137// CPP-DEFAULT: int32_t v3 = func_a();138// CPP-DEFAULT: break;139// CPP-DEFAULT: }140// CPP-DEFAULT: default: {141// CPP-DEFAULT: float v4 = 4.200000000e+01f;142// CPP-DEFAULT: func2(v4);143// CPP-DEFAULT: break;144// CPP-DEFAULT: }145// CPP-DEFAULT: }146// CPP-DEFAULT: return;147// CPP-DEFAULT: }148 149// CPP-DECLTOP-LABEL: void emitc_switch_size_t() {150// CPP-DECLTOP: size_t v1;151// CPP-DECLTOP: float v2;152// CPP-DECLTOP: int32_t v3;153// CPP-DECLTOP: int32_t v4;154// CPP-DECLTOP: v1 = 1;155// CPP-DECLTOP: switch (v1) {156// CPP-DECLTOP: case 2: {157// CPP-DECLTOP: v3 = func_b();158// CPP-DECLTOP: break;159// CPP-DECLTOP: }160// CPP-DECLTOP: case 5: {161// CPP-DECLTOP: v4 = func_a();162// CPP-DECLTOP: break;163// CPP-DECLTOP: }164// CPP-DECLTOP: default: {165// CPP-DECLTOP: v2 = 4.200000000e+01f;166// CPP-DECLTOP: func2(v2);167// CPP-DECLTOP: break;168// CPP-DECLTOP: }169// CPP-DECLTOP: }170// CPP-DECLTOP: return;171// CPP-DECLTOP: }172func.func @emitc_switch_size_t() {173 %0 = "emitc.constant"(){value = 1 : index} : () -> !emitc.size_t174 175 emitc.switch %0 : !emitc.size_t176 case 2 {177 %1 = emitc.call_opaque "func_b" () : () -> i32178 emitc.yield179 }180 case 5 {181 %2 = emitc.call_opaque "func_a" () : () -> i32182 emitc.yield183 }184 default {185 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32186 emitc.call_opaque "func2" (%3) : (f32) -> ()187 emitc.yield188 }189 return190}191 192// CPP-DEFAULT-LABEL: void emitc_switch_index() {193// CPP-DEFAULT: size_t v1 = 1;194// CPP-DEFAULT: switch (v1) {195// CPP-DEFAULT: case 2: {196// CPP-DEFAULT: int32_t v2 = func_b();197// CPP-DEFAULT: break;198// CPP-DEFAULT: }199// CPP-DEFAULT: case 5: {200// CPP-DEFAULT: int32_t v3 = func_a();201// CPP-DEFAULT: break;202// CPP-DEFAULT: }203// CPP-DEFAULT: default: {204// CPP-DEFAULT: float v4 = 4.200000000e+01f;205// CPP-DEFAULT: func2(v4);206// CPP-DEFAULT: break;207// CPP-DEFAULT: }208// CPP-DEFAULT: }209// CPP-DEFAULT: return;210// CPP-DEFAULT: }211 212// CPP-DECLTOP-LABEL: void emitc_switch_index() {213// CPP-DECLTOP: size_t v1;214// CPP-DECLTOP: float v2;215// CPP-DECLTOP: int32_t v3;216// CPP-DECLTOP: int32_t v4;217// CPP-DECLTOP: v1 = 1;218// CPP-DECLTOP: switch (v1) {219// CPP-DECLTOP: case 2: {220// CPP-DECLTOP: v3 = func_b();221// CPP-DECLTOP: break;222// CPP-DECLTOP: }223// CPP-DECLTOP: case 5: {224// CPP-DECLTOP: v4 = func_a();225// CPP-DECLTOP: break;226// CPP-DECLTOP: }227// CPP-DECLTOP: default: {228// CPP-DECLTOP: v2 = 4.200000000e+01f;229// CPP-DECLTOP: func2(v2);230// CPP-DECLTOP: break;231// CPP-DECLTOP: }232// CPP-DECLTOP: }233// CPP-DECLTOP: return;234// CPP-DECLTOP: }235func.func @emitc_switch_index() {236 %0 = "emitc.constant"(){value = 1 : index} : () -> index237 238 emitc.switch %0 : index239 case 2 {240 %1 = emitc.call_opaque "func_b" () : () -> i32241 emitc.yield242 }243 case 5 {244 %2 = emitc.call_opaque "func_a" () : () -> i32245 emitc.yield246 }247 default {248 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32249 emitc.call_opaque "func2" (%3) : (f32) -> ()250 emitc.yield251 }252 return253}254 255// CPP-DEFAULT-LABEL: void emitc_switch_opaque() {256// CPP-DEFAULT: size_t v1 = 1;257// CPP-DEFAULT: switch (v1) {258// CPP-DEFAULT: case 2: {259// CPP-DEFAULT: int32_t v2 = func_b();260// CPP-DEFAULT: break;261// CPP-DEFAULT: }262// CPP-DEFAULT: case 5: {263// CPP-DEFAULT: int32_t v3 = func_a();264// CPP-DEFAULT: break;265// CPP-DEFAULT: }266// CPP-DEFAULT: default: {267// CPP-DEFAULT: float v4 = 4.200000000e+01f;268// CPP-DEFAULT: func2(v4);269// CPP-DEFAULT: break;270// CPP-DEFAULT: }271// CPP-DEFAULT: }272// CPP-DEFAULT: return;273// CPP-DEFAULT: }274 275// CPP-DECLTOP-LABEL: void emitc_switch_opaque() {276// CPP-DECLTOP: size_t v1;277// CPP-DECLTOP: float v2;278// CPP-DECLTOP: int32_t v3;279// CPP-DECLTOP: int32_t v4;280// CPP-DECLTOP: v1 = 1;281// CPP-DECLTOP: switch (v1) {282// CPP-DECLTOP: case 2: {283// CPP-DECLTOP: v3 = func_b();284// CPP-DECLTOP: break;285// CPP-DECLTOP: }286// CPP-DECLTOP: case 5: {287// CPP-DECLTOP: v4 = func_a();288// CPP-DECLTOP: break;289// CPP-DECLTOP: }290// CPP-DECLTOP: default: {291// CPP-DECLTOP: v2 = 4.200000000e+01f;292// CPP-DECLTOP: func2(v2);293// CPP-DECLTOP: break;294// CPP-DECLTOP: }295// CPP-DECLTOP: }296// CPP-DECLTOP: return;297// CPP-DECLTOP: }298func.func @emitc_switch_opaque() {299 %0 = "emitc.constant"() {value = #emitc.opaque<"1">} 300 : () -> !emitc.opaque<"size_t">301 302 emitc.switch %0 : !emitc.opaque<"size_t">303 case 2 {304 %1 = emitc.call_opaque "func_b" () : () -> i32305 emitc.yield306 }307 case 5 {308 %2 = emitc.call_opaque "func_a" () : () -> i32309 emitc.yield310 }311 default {312 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32313 emitc.call_opaque "func2" (%3) : (f32) -> ()314 emitc.yield315 }316 return317}318 319// CPP-DEFAULT-LABEL: void emitc_switch_i1() {320// CPP-DEFAULT: bool v1 = true;321// CPP-DEFAULT: switch (v1) {322// CPP-DEFAULT: case 2: {323// CPP-DEFAULT: int32_t v2 = func_b();324// CPP-DEFAULT: break;325// CPP-DEFAULT: }326// CPP-DEFAULT: case 5: {327// CPP-DEFAULT: int32_t v3 = func_a();328// CPP-DEFAULT: break;329// CPP-DEFAULT: }330// CPP-DEFAULT: default: {331// CPP-DEFAULT: float v4 = 4.200000000e+01f;332// CPP-DEFAULT: func2(v4);333// CPP-DEFAULT: break;334// CPP-DEFAULT: }335// CPP-DEFAULT: }336// CPP-DEFAULT: return;337// CPP-DEFAULT: }338 339// CPP-DECLTOP-LABEL: void emitc_switch_i1() {340// CPP-DECLTOP: bool v1;341// CPP-DECLTOP: float v2;342// CPP-DECLTOP: int32_t v3;343// CPP-DECLTOP: int32_t v4;344// CPP-DECLTOP: v1 = true;345// CPP-DECLTOP: switch (v1) {346// CPP-DECLTOP: case 2: {347// CPP-DECLTOP: v3 = func_b();348// CPP-DECLTOP: break;349// CPP-DECLTOP: }350// CPP-DECLTOP: case 5: {351// CPP-DECLTOP: v4 = func_a();352// CPP-DECLTOP: break;353// CPP-DECLTOP: }354// CPP-DECLTOP: default: {355// CPP-DECLTOP: v2 = 4.200000000e+01f;356// CPP-DECLTOP: func2(v2);357// CPP-DECLTOP: break;358// CPP-DECLTOP: }359// CPP-DECLTOP: }360// CPP-DECLTOP: return;361// CPP-DECLTOP: }362func.func @emitc_switch_i1() {363 %0 = "emitc.constant"(){value = 1 : i1} : () -> i1364 365 emitc.switch %0 : i1366 case 2 {367 %1 = emitc.call_opaque "func_b" () : () -> i32368 emitc.yield369 }370 case 5 {371 %2 = emitc.call_opaque "func_a" () : () -> i32372 emitc.yield373 }374 default {375 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32376 emitc.call_opaque "func2" (%3) : (f32) -> ()377 emitc.yield378 }379 return380}381 382// CPP-DEFAULT-LABEL: void emitc_switch_i8() {383// CPP-DEFAULT: int8_t v1 = 1;384// CPP-DEFAULT: switch (v1) {385// CPP-DEFAULT: case 2: {386// CPP-DEFAULT: int32_t v2 = func_b();387// CPP-DEFAULT: break;388// CPP-DEFAULT: }389// CPP-DEFAULT: case 5: {390// CPP-DEFAULT: int32_t v3 = func_a();391// CPP-DEFAULT: break;392// CPP-DEFAULT: }393// CPP-DEFAULT: default: {394// CPP-DEFAULT: float v4 = 4.200000000e+01f;395// CPP-DEFAULT: func2(v4);396// CPP-DEFAULT: break;397// CPP-DEFAULT: }398// CPP-DEFAULT: }399// CPP-DEFAULT: return;400// CPP-DEFAULT: }401 402// CPP-DECLTOP-LABEL: void emitc_switch_i8() {403// CPP-DECLTOP: int8_t v1;404// CPP-DECLTOP: float v2;405// CPP-DECLTOP: int32_t v3;406// CPP-DECLTOP: int32_t v4;407// CPP-DECLTOP: v1 = 1;408// CPP-DECLTOP: switch (v1) {409// CPP-DECLTOP: case 2: {410// CPP-DECLTOP: v3 = func_b();411// CPP-DECLTOP: break;412// CPP-DECLTOP: }413// CPP-DECLTOP: case 5: {414// CPP-DECLTOP: v4 = func_a();415// CPP-DECLTOP: break;416// CPP-DECLTOP: }417// CPP-DECLTOP: default: {418// CPP-DECLTOP: v2 = 4.200000000e+01f;419// CPP-DECLTOP: func2(v2);420// CPP-DECLTOP: break;421// CPP-DECLTOP: }422// CPP-DECLTOP: }423// CPP-DECLTOP: return;424// CPP-DECLTOP: }425func.func @emitc_switch_i8() {426 %0 = "emitc.constant"(){value = 1 : i8} : () -> i8427 428 emitc.switch %0 : i8429 case 2 {430 %1 = emitc.call_opaque "func_b" () : () -> i32431 emitc.yield432 }433 case 5 {434 %2 = emitc.call_opaque "func_a" () : () -> i32435 emitc.yield436 }437 default {438 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32439 emitc.call_opaque "func2" (%3) : (f32) -> ()440 emitc.yield441 }442 return443}444 445// CPP-DEFAULT-LABEL: void emitc_switch_ui8() {446// CPP-DEFAULT: uint8_t v1 = 1;447// CPP-DEFAULT: switch (v1) {448// CPP-DEFAULT: case 2: {449// CPP-DEFAULT: int32_t v2 = func_b();450// CPP-DEFAULT: break;451// CPP-DEFAULT: }452// CPP-DEFAULT: case 5: {453// CPP-DEFAULT: int32_t v3 = func_a();454// CPP-DEFAULT: break;455// CPP-DEFAULT: }456// CPP-DEFAULT: default: {457// CPP-DEFAULT: float v4 = 4.200000000e+01f;458// CPP-DEFAULT: func2(v4);459// CPP-DEFAULT: break;460// CPP-DEFAULT: }461// CPP-DEFAULT: }462// CPP-DEFAULT: return;463// CPP-DEFAULT: }464 465// CPP-DECLTOP-LABEL: void emitc_switch_ui8() {466// CPP-DECLTOP: uint8_t v1;467// CPP-DECLTOP: float v2;468// CPP-DECLTOP: int32_t v3;469// CPP-DECLTOP: int32_t v4;470// CPP-DECLTOP: v1 = 1;471// CPP-DECLTOP: switch (v1) {472// CPP-DECLTOP: case 2: {473// CPP-DECLTOP: v3 = func_b();474// CPP-DECLTOP: break;475// CPP-DECLTOP: }476// CPP-DECLTOP: case 5: {477// CPP-DECLTOP: v4 = func_a();478// CPP-DECLTOP: break;479// CPP-DECLTOP: }480// CPP-DECLTOP: default: {481// CPP-DECLTOP: v2 = 4.200000000e+01f;482// CPP-DECLTOP: func2(v2);483// CPP-DECLTOP: break;484// CPP-DECLTOP: }485// CPP-DECLTOP: }486// CPP-DECLTOP: return;487// CPP-DECLTOP: }488func.func @emitc_switch_ui8() {489 %0 = "emitc.constant"(){value = 1 : ui8} : () -> ui8490 491 emitc.switch %0 : ui8492 case 2 {493 %1 = emitc.call_opaque "func_b" () : () -> i32494 emitc.yield495 }496 case 5 {497 %2 = emitc.call_opaque "func_a" () : () -> i32498 emitc.yield499 }500 default {501 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32502 emitc.call_opaque "func2" (%3) : (f32) -> ()503 emitc.yield504 }505 return506}507 508// CPP-DEFAULT-LABEL: void emitc_switch_i16() {509// CPP-DEFAULT: int16_t v1 = 1;510// CPP-DEFAULT: switch (v1) {511// CPP-DEFAULT: case 2: {512// CPP-DEFAULT: int32_t v2 = func_b();513// CPP-DEFAULT: break;514// CPP-DEFAULT: }515// CPP-DEFAULT: case 5: {516// CPP-DEFAULT: int32_t v3 = func_a();517// CPP-DEFAULT: break;518// CPP-DEFAULT: }519// CPP-DEFAULT: default: {520// CPP-DEFAULT: float v4 = 4.200000000e+01f;521// CPP-DEFAULT: func2(v4);522// CPP-DEFAULT: break;523// CPP-DEFAULT: }524// CPP-DEFAULT: }525// CPP-DEFAULT: return;526// CPP-DEFAULT: }527 528// CPP-DECLTOP-LABEL: void emitc_switch_i16() {529// CPP-DECLTOP: int16_t v1;530// CPP-DECLTOP: float v2;531// CPP-DECLTOP: int32_t v3;532// CPP-DECLTOP: int32_t v4;533// CPP-DECLTOP: v1 = 1;534// CPP-DECLTOP: switch (v1) {535// CPP-DECLTOP: case 2: {536// CPP-DECLTOP: v3 = func_b();537// CPP-DECLTOP: break;538// CPP-DECLTOP: }539// CPP-DECLTOP: case 5: {540// CPP-DECLTOP: v4 = func_a();541// CPP-DECLTOP: break;542// CPP-DECLTOP: }543// CPP-DECLTOP: default: {544// CPP-DECLTOP: v2 = 4.200000000e+01f;545// CPP-DECLTOP: func2(v2);546// CPP-DECLTOP: break;547// CPP-DECLTOP: }548// CPP-DECLTOP: }549// CPP-DECLTOP: return;550// CPP-DECLTOP: }551func.func @emitc_switch_i16() {552 %0 = "emitc.constant"(){value = 1 : i16} : () -> i16553 554 emitc.switch %0 : i16555 case 2 {556 %1 = emitc.call_opaque "func_b" () : () -> i32557 emitc.yield558 }559 case 5 {560 %2 = emitc.call_opaque "func_a" () : () -> i32561 emitc.yield562 }563 default {564 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32565 emitc.call_opaque "func2" (%3) : (f32) -> ()566 emitc.yield567 }568 return569}570 571// CPP-DEFAULT-LABEL: void emitc_switch_ui16() {572// CPP-DEFAULT: uint16_t v1 = 1;573// CPP-DEFAULT: switch (v1) {574// CPP-DEFAULT: case 2: {575// CPP-DEFAULT: int32_t v2 = func_b();576// CPP-DEFAULT: break;577// CPP-DEFAULT: }578// CPP-DEFAULT: case 5: {579// CPP-DEFAULT: int32_t v3 = func_a();580// CPP-DEFAULT: break;581// CPP-DEFAULT: }582// CPP-DEFAULT: default: {583// CPP-DEFAULT: float v4 = 4.200000000e+01f;584// CPP-DEFAULT: func2(v4);585// CPP-DEFAULT: break;586// CPP-DEFAULT: }587// CPP-DEFAULT: }588// CPP-DEFAULT: return;589// CPP-DEFAULT: }590 591// CPP-DECLTOP-LABEL: void emitc_switch_ui16() {592// CPP-DECLTOP: uint16_t v1;593// CPP-DECLTOP: float v2;594// CPP-DECLTOP: int32_t v3;595// CPP-DECLTOP: int32_t v4;596// CPP-DECLTOP: v1 = 1;597// CPP-DECLTOP: switch (v1) {598// CPP-DECLTOP: case 2: {599// CPP-DECLTOP: v3 = func_b();600// CPP-DECLTOP: break;601// CPP-DECLTOP: }602// CPP-DECLTOP: case 5: {603// CPP-DECLTOP: v4 = func_a();604// CPP-DECLTOP: break;605// CPP-DECLTOP: }606// CPP-DECLTOP: default: {607// CPP-DECLTOP: v2 = 4.200000000e+01f;608// CPP-DECLTOP: func2(v2);609// CPP-DECLTOP: break;610// CPP-DECLTOP: }611// CPP-DECLTOP: }612// CPP-DECLTOP: return;613// CPP-DECLTOP: }614func.func @emitc_switch_ui16() {615 %0 = "emitc.constant"(){value = 1 : ui16} : () -> ui16616 617 emitc.switch %0 : ui16618 case 2 {619 %1 = emitc.call_opaque "func_b" () : () -> i32620 emitc.yield621 }622 case 5 {623 %2 = emitc.call_opaque "func_a" () : () -> i32624 emitc.yield625 }626 default {627 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32628 emitc.call_opaque "func2" (%3) : (f32) -> ()629 emitc.yield630 }631 return632}633 634// CPP-DEFAULT-LABEL: void emitc_switch_i32() {635// CPP-DEFAULT: int32_t v1 = 1;636// CPP-DEFAULT: switch (v1) {637// CPP-DEFAULT: case 2: {638// CPP-DEFAULT: int32_t v2 = func_b();639// CPP-DEFAULT: break;640// CPP-DEFAULT: }641// CPP-DEFAULT: case 5: {642// CPP-DEFAULT: int32_t v3 = func_a();643// CPP-DEFAULT: break;644// CPP-DEFAULT: }645// CPP-DEFAULT: default: {646// CPP-DEFAULT: float v4 = 4.200000000e+01f;647// CPP-DEFAULT: func2(v4);648// CPP-DEFAULT: break;649// CPP-DEFAULT: }650// CPP-DEFAULT: }651// CPP-DEFAULT: return;652// CPP-DEFAULT: }653 654// CPP-DECLTOP-LABEL: void emitc_switch_i32() {655// CPP-DECLTOP: int32_t v1;656// CPP-DECLTOP: float v2;657// CPP-DECLTOP: int32_t v3;658// CPP-DECLTOP: int32_t v4;659// CPP-DECLTOP: v1 = 1;660// CPP-DECLTOP: switch (v1) {661// CPP-DECLTOP: case 2: {662// CPP-DECLTOP: v3 = func_b();663// CPP-DECLTOP: break;664// CPP-DECLTOP: }665// CPP-DECLTOP: case 5: {666// CPP-DECLTOP: v4 = func_a();667// CPP-DECLTOP: break;668// CPP-DECLTOP: }669// CPP-DECLTOP: default: {670// CPP-DECLTOP: v2 = 4.200000000e+01f;671// CPP-DECLTOP: func2(v2);672// CPP-DECLTOP: break;673// CPP-DECLTOP: }674// CPP-DECLTOP: }675// CPP-DECLTOP: return;676// CPP-DECLTOP: }677func.func @emitc_switch_i32() {678 %0 = "emitc.constant"(){value = 1 : i32} : () -> i32679 680 emitc.switch %0 : i32681 case 2 {682 %1 = emitc.call_opaque "func_b" () : () -> i32683 emitc.yield684 }685 case 5 {686 %2 = emitc.call_opaque "func_a" () : () -> i32687 emitc.yield688 }689 default {690 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32691 emitc.call_opaque "func2" (%3) : (f32) -> ()692 emitc.yield693 }694 return695}696 697// CPP-DEFAULT-LABEL: void emitc_switch_ui32() {698// CPP-DEFAULT: uint32_t v1 = 1;699// CPP-DEFAULT: switch (v1) {700// CPP-DEFAULT: case 2: {701// CPP-DEFAULT: int32_t v2 = func_b();702// CPP-DEFAULT: break;703// CPP-DEFAULT: }704// CPP-DEFAULT: case 5: {705// CPP-DEFAULT: int32_t v3 = func_a();706// CPP-DEFAULT: break;707// CPP-DEFAULT: }708// CPP-DEFAULT: default: {709// CPP-DEFAULT: float v4 = 4.200000000e+01f;710// CPP-DEFAULT: func2(v4);711// CPP-DEFAULT: break;712// CPP-DEFAULT: }713// CPP-DEFAULT: }714// CPP-DEFAULT: return;715// CPP-DEFAULT: }716 717// CPP-DECLTOP-LABEL: void emitc_switch_ui32() {718// CPP-DECLTOP: uint32_t v1;719// CPP-DECLTOP: float v2;720// CPP-DECLTOP: int32_t v3;721// CPP-DECLTOP: int32_t v4;722// CPP-DECLTOP: v1 = 1;723// CPP-DECLTOP: switch (v1) {724// CPP-DECLTOP: case 2: {725// CPP-DECLTOP: v3 = func_b();726// CPP-DECLTOP: break;727// CPP-DECLTOP: }728// CPP-DECLTOP: case 5: {729// CPP-DECLTOP: v4 = func_a();730// CPP-DECLTOP: break;731// CPP-DECLTOP: }732// CPP-DECLTOP: default: {733// CPP-DECLTOP: v2 = 4.200000000e+01f;734// CPP-DECLTOP: func2(v2);735// CPP-DECLTOP: break;736// CPP-DECLTOP: }737// CPP-DECLTOP: }738// CPP-DECLTOP: return;739// CPP-DECLTOP: }740func.func @emitc_switch_ui32() {741 %0 = "emitc.constant"(){value = 1 : ui32} : () -> ui32742 743 emitc.switch %0 : ui32744 case 2 {745 %1 = emitc.call_opaque "func_b" () : () -> i32746 emitc.yield747 }748 case 5 {749 %2 = emitc.call_opaque "func_a" () : () -> i32750 emitc.yield751 }752 default {753 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32754 emitc.call_opaque "func2" (%3) : (f32) -> ()755 emitc.yield756 }757 return758}759 760// CPP-DEFAULT-LABEL: void emitc_switch_i64() {761// CPP-DEFAULT: int64_t v1 = 1;762// CPP-DEFAULT: switch (v1) {763// CPP-DEFAULT: case 2: {764// CPP-DEFAULT: int32_t v2 = func_b();765// CPP-DEFAULT: break;766// CPP-DEFAULT: }767// CPP-DEFAULT: case 5: {768// CPP-DEFAULT: int32_t v3 = func_a();769// CPP-DEFAULT: break;770// CPP-DEFAULT: }771// CPP-DEFAULT: default: {772// CPP-DEFAULT: float v4 = 4.200000000e+01f;773// CPP-DEFAULT: func2(v4);774// CPP-DEFAULT: break;775// CPP-DEFAULT: }776// CPP-DEFAULT: }777// CPP-DEFAULT: return;778// CPP-DEFAULT: }779 780// CPP-DECLTOP-LABEL: void emitc_switch_i64() {781// CPP-DECLTOP: int64_t v1;782// CPP-DECLTOP: float v2;783// CPP-DECLTOP: int32_t v3;784// CPP-DECLTOP: int32_t v4;785// CPP-DECLTOP: v1 = 1;786// CPP-DECLTOP: switch (v1) {787// CPP-DECLTOP: case 2: {788// CPP-DECLTOP: v3 = func_b();789// CPP-DECLTOP: break;790// CPP-DECLTOP: }791// CPP-DECLTOP: case 5: {792// CPP-DECLTOP: v4 = func_a();793// CPP-DECLTOP: break;794// CPP-DECLTOP: }795// CPP-DECLTOP: default: {796// CPP-DECLTOP: v2 = 4.200000000e+01f;797// CPP-DECLTOP: func2(v2);798// CPP-DECLTOP: break;799// CPP-DECLTOP: }800// CPP-DECLTOP: }801// CPP-DECLTOP: return;802// CPP-DECLTOP: }803func.func @emitc_switch_i64() {804 %0 = "emitc.constant"(){value = 1 : i64} : () -> i64805 806 emitc.switch %0 : i64807 case 2 {808 %1 = emitc.call_opaque "func_b" () : () -> i32809 emitc.yield810 }811 case 5 {812 %2 = emitc.call_opaque "func_a" () : () -> i32813 emitc.yield814 }815 default {816 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32817 emitc.call_opaque "func2" (%3) : (f32) -> ()818 emitc.yield819 }820 return821}822 823// CPP-DEFAULT-LABEL: void emitc_switch_ui64() {824// CPP-DEFAULT: uint64_t v1 = 1;825// CPP-DEFAULT: switch (v1) {826// CPP-DEFAULT: case 2: {827// CPP-DEFAULT: int32_t v2 = func_b();828// CPP-DEFAULT: break;829// CPP-DEFAULT: }830// CPP-DEFAULT: case 5: {831// CPP-DEFAULT: int32_t v3 = func_a();832// CPP-DEFAULT: break;833// CPP-DEFAULT: }834// CPP-DEFAULT: default: {835// CPP-DEFAULT: float v4 = 4.200000000e+01f;836// CPP-DEFAULT: func2(v4);837// CPP-DEFAULT: break;838// CPP-DEFAULT: }839// CPP-DEFAULT: }840// CPP-DEFAULT: return;841// CPP-DEFAULT: }842 843// CPP-DECLTOP-LABEL: void emitc_switch_ui64() {844// CPP-DECLTOP: uint64_t v1;845// CPP-DECLTOP: float v2;846// CPP-DECLTOP: int32_t v3;847// CPP-DECLTOP: int32_t v4;848// CPP-DECLTOP: v1 = 1;849// CPP-DECLTOP: switch (v1) {850// CPP-DECLTOP: case 2: {851// CPP-DECLTOP: v3 = func_b();852// CPP-DECLTOP: break;853// CPP-DECLTOP: }854// CPP-DECLTOP: case 5: {855// CPP-DECLTOP: v4 = func_a();856// CPP-DECLTOP: break;857// CPP-DECLTOP: }858// CPP-DECLTOP: default: {859// CPP-DECLTOP: v2 = 4.200000000e+01f;860// CPP-DECLTOP: func2(v2);861// CPP-DECLTOP: break;862// CPP-DECLTOP: }863// CPP-DECLTOP: }864// CPP-DECLTOP: return;865// CPP-DECLTOP: }866func.func @emitc_switch_ui64() {867 %0 = "emitc.constant"(){value = 1 : ui64} : () -> ui64868 869 emitc.switch %0 : ui64870 case 2 {871 %1 = emitc.call_opaque "func_b" () : () -> i32872 emitc.yield873 }874 case 5 {875 %2 = emitc.call_opaque "func_a" () : () -> i32876 emitc.yield877 }878 default {879 %3 = "emitc.constant"(){value = 42.0 : f32} : () -> f32880 emitc.call_opaque "func2" (%3) : (f32) -> ()881 emitc.yield882 }883 return884}885 886// CPP-DEFAULT-LABEL: void emitc_switch_expression() {887// CPP-DEFAULT: int64_t v1 = 42;888// CPP-DEFAULT: switch (-v1) {889// CPP-DEFAULT: default: {890// CPP-DEFAULT: break;891// CPP-DEFAULT: }892// CPP-DEFAULT: }893// CPP-DEFAULT: return;894// CPP-DEFAULT: }895 896// CPP-DECLTOP-LABEL: void emitc_switch_expression() {897// CPP-DECLTOP: int64_t v1;898// CPP-DECLTOP: v1 = 42;899// CPP-DECLTOP: switch (-v1) {900// CPP-DECLTOP: default: {901// CPP-DECLTOP: break;902// CPP-DECLTOP: }903// CPP-DECLTOP: }904// CPP-DECLTOP: return;905// CPP-DECLTOP: }906 907func.func @emitc_switch_expression() {908 %x = "emitc.constant"(){value = 42 : i64} : () -> i64909 910 %0 = emitc.expression %x : (i64) -> i64 {911 %a = emitc.unary_minus %x : (i64) -> i64912 emitc.yield %a : i64913 }914 915 emitc.switch %0 : i64916 default {917 emitc.yield918 }919 return920}921