brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.3 KiB · 87e4cb8 Raw
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