brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · ef3924d Raw
183 lines · plain
1# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+exception-handling < %s | FileCheck %s2# Check that it converts to .o without errors, but don't check any output:3# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+exception-handling -filetype=obj -o %t.o < %s4 5  .tagtype  __cpp_exception i326 7block_branch_test:8  .functype  block_branch_test () -> ()9 10  # Block input paramter / return tests11 12  i32.const 013  block (i32) -> (i32)14  end_block15  drop16 17  i32.const 018  i64.const 019  block (i32, i64) -> (i32, f32)20    drop21    f32.const 0.022  end_block23  drop24  drop25 26  i32.const 027  loop (i32) -> (f32)28    drop29    f32.const 0.030  end_loop31  drop32 33  i32.const 034  i32.const 035  if (i32) -> (i32)36  else37    i32.popcnt38  end_if39  drop40 41  try i3242    i32.const 043  catch       __cpp_exception44    i32.clz45  catch_all46    i32.const 547  end_try48  drop49 50  i32.const 051  block (i32) -> (i32)52    block (i32) -> (f32)53      drop54      f32.const 0.055    end_block56    drop57    i32.const 058  end_block59  drop60 61  # Branch tests62 63  block f3264    f32.const 0.065    i32.const 066    br_if 067    f32.const 1.068    br 069    # After 'br', we can pop any values from the polymorphic stack70    i32.add71    i32.sub72    i32.mul73    drop74  end_block75  drop76 77  block () -> (f32, f64)78    f32.const 0.079    f64.const 0.080    i32.const 081    br_if 082    block (f32, f64) -> (f32, f64)83      i32.const 184      br_if 085    end_block86  end_block87  drop88  drop89 90  # Within a loop, branches target the start of the loop91  i32.const 092  loop (i32) -> ()93    i32.const 194    br 095  end_loop96 97  end_function98 99# CHECK-LABEL: block_branch_test100 101# CHECK:         i32.const  0102# CHECK-NEXT:    block     (i32) -> (i32)103# CHECK-NEXT:    end_block                               # label0:104# CHECK-NEXT:    drop105 106# CHECK:         i32.const  0107# CHECK-NEXT:    i64.const  0108# CHECK-NEXT:    block     (i32, i64) -> (i32, f32)109# CHECK-NEXT:    drop110# CHECK-NEXT:    f32.const  0x0p0111# CHECK-NEXT:    end_block                               # label1:112# CHECK-NEXT:    drop113# CHECK-NEXT:    drop114 115# CHECK:         i32.const  0116# CHECK-NEXT:    loop      (i32) -> (f32)                  # label2:117# CHECK-NEXT:    drop118# CHECK-NEXT:    f32.const  0x0p0119# CHECK-NEXT:    end_loop120# CHECK-NEXT:    drop121 122# CHECK:         i32.const  0123# CHECK-NEXT:    i32.const  0124# CHECK-NEXT:    if      (i32) -> (i32)125# CHECK-NEXT:    else126# CHECK-NEXT:    i32.popcnt127# CHECK-NEXT:    end_if128# CHECK-NEXT:    drop129 130# CHECK:         try       i32131# CHECK-NEXT:    i32.const  0132# CHECK-NEXT:    catch     __cpp_exception                 # catch3:133# CHECK-NEXT:    i32.clz134# CHECK-NEXT:    catch_all135# CHECK-NEXT:    i32.const  5136# CHECK-NEXT:    end_try                                 # label3:137# CHECK-NEXT:    drop138 139# CHECK:         i32.const  0140# CHECK-NEXT:    block     (i32) -> (i32)141# CHECK-NEXT:    block     (i32) -> (f32)142# CHECK-NEXT:    drop143# CHECK-NEXT:    f32.const  0x0p0144# CHECK-NEXT:    end_block                               # label5:145# CHECK-NEXT:    drop146# CHECK-NEXT:    i32.const  0147# CHECK-NEXT:    end_block                               # label4:148# CHECK-NEXT:    drop149 150# CHECK:         block     f32151# CHECK-NEXT:    f32.const  0x0p0152# CHECK-NEXT:    i32.const  0153# CHECK-NEXT:    br_if     0                               # 0: down to label6154# CHECK-NEXT:    f32.const  0x1p0155# CHECK-NEXT:    br        0                               # 0: down to label6156# CHECK-NEXT:    i32.add157# CHECK-NEXT:    i32.sub158# CHECK-NEXT:    i32.mul159# CHECK-NEXT:    drop160# CHECK-NEXT:    end_block                               # label6:161# CHECK-NEXT:    drop162 163# CHECK:         block     () -> (f32, f64)164# CHECK-NEXT:    f32.const  0x0p0165# CHECK-NEXT:    f64.const  0x0p0166# CHECK-NEXT:    i32.const  0167# CHECK-NEXT:    br_if     0                               # 0: down to label7168# CHECK-NEXT:    block     (f32, f64) -> (f32, f64)169# CHECK-NEXT:    i32.const  1170# CHECK-NEXT:    br_if     0                               # 0: down to label8171# CHECK-NEXT:    end_block                               # label8:172# CHECK-NEXT:    end_block                               # label7:173# CHECK-NEXT:    drop174# CHECK-NEXT:    drop175 176# CHECK:         i32.const  0177# CHECK-NEXT:    loop      (i32) -> ()                     # label9:178# CHECK-NEXT:    i32.const  1179# CHECK-NEXT:    br        0                               # 0: up to label9180# CHECK-NEXT:    end_loop181 182# CHECK:         end_function183