[llvm-dev] how to type-legalize a dag

Rail Shafigulin via llvm-dev llvm-dev at lists.llvm.org
Tue Mar 15 14:16:33 PDT 2016


I have added new instructions to my target, unfortunately they are not
being properly type legalized. The instructions I've added are a vector
add, vector load and a vector store. Can anyone lend a hand on how to
legalize them so that my target would be able to recognize them.

Below is the output of llc with a -debug-only=isel. As you could see the
output type for load, store, and add changes from v4i32 to i32 during
legalization. How can I preserve the output type to v4i32?


Any help is greatly appreciated.

=== main
Initial selection DAG: BB#0 'main:entry'
SelectionDAG has 14 nodes:
  0x3e7e2f0: ch = EntryToken

  0x3ea45e0: i32 = undef

    0x3e7e2f0: <multiple use>
    0x3ea43d0: i32 = FrameIndex<1>

    0x3ea45e0: <multiple use>
  0x3ea46e8: v4i32,ch = load 0x3e7e2f0, 0x3ea43d0,
0x3ea45e0<LD16[%a](align=4)> [ORD=5]

    0x3e7e2f0: <multiple use>
    0x3ea47f0: i32 = FrameIndex<2>

    0x3ea45e0: <multiple use>
  0x3ea48f8: v4i32,ch = load 0x3e7e2f0, 0x3ea47f0,
0x3ea45e0<LD16[%b](align=4)> [ORD=6]

  0x3ea4e20: i32 = Register %R11

        0x3ea46e8: <multiple use>
        0x3ea48f8: <multiple use>
      0x3ea4c10: ch = TokenFactor 0x3ea46e8:1, 0x3ea48f8:1 [ORD=8]

        0x3ea46e8: <multiple use>
        0x3ea48f8: <multiple use>
      0x3ea4a00: v4i32 = add 0x3ea46e8, 0x3ea48f8 [ORD=7]

      0x3ea4b08: i32 = FrameIndex<0>

      0x3ea45e0: <multiple use>
    0x3ea4d18: ch = store 0x3ea4c10, 0x3ea4a00, 0x3ea4b08,
0x3ea45e0<ST16[%z](align=4)> [ORD=8]

    0x3ea4e20: <multiple use>
    0x3ea44d8: i32 = Constant<0>

  0x3ea4f28: ch,glue = CopyToReg 0x3ea4d18, 0x3ea4e20, 0x3ea44d8 [ORD=9]

    0x3ea4f28: <multiple use>
    0x3ea4e20: <multiple use>
    0x3ea4f28: <multiple use>
  0x3ea5030: ch = EsenciaISD::RET_FLAG 0x3ea4f28, 0x3ea4e20, 0x3ea4f28:1
[ORD=9]


Optimized lowered selection DAG: BB#0 'main:entry'
SelectionDAG has 14 nodes:
  0x3e7e2f0: ch = EntryToken

  0x3ea45e0: i32 = undef

    0x3e7e2f0: <multiple use>
    0x3ea43d0: i32 = FrameIndex<1>

    0x3ea45e0: <multiple use>
  0x3ea46e8: v4i32,ch = load 0x3e7e2f0, 0x3ea43d0,
0x3ea45e0<LD16[%a](align=4)> [ORD=5]

    0x3e7e2f0: <multiple use>
    0x3ea47f0: i32 = FrameIndex<2>

    0x3ea45e0: <multiple use>
  0x3ea48f8: v4i32,ch = load 0x3e7e2f0, 0x3ea47f0,
0x3ea45e0<LD16[%b](align=4)> [ORD=6]

  0x3ea4e20: i32 = Register %R11

        0x3ea46e8: <multiple use>
        0x3ea48f8: <multiple use>
      0x3ea4c10: ch = TokenFactor 0x3ea46e8:1, 0x3ea48f8:1 [ORD=8]

        0x3ea46e8: <multiple use>
        0x3ea48f8: <multiple use>
      0x3ea4a00: v4i32 = add 0x3ea46e8, 0x3ea48f8 [ORD=7]

      0x3ea4b08: i32 = FrameIndex<0>

      0x3ea45e0: <multiple use>
    0x3ea4d18: ch = store 0x3ea4c10, 0x3ea4a00, 0x3ea4b08,
0x3ea45e0<ST16[%z](align=4)> [ORD=8]

    0x3ea4e20: <multiple use>
    0x3ea44d8: i32 = Constant<0>

  0x3ea4f28: ch,glue = CopyToReg 0x3ea4d18, 0x3ea4e20, 0x3ea44d8 [ORD=9]

    0x3ea4f28: <multiple use>
    0x3ea4e20: <multiple use>
    0x3ea4f28: <multiple use>
  0x3ea5030: ch = EsenciaISD::RET_FLAG 0x3ea4f28, 0x3ea4e20, 0x3ea4f28:1
[ORD=9]


Type-legalized selection DAG: BB#0 'main:entry'
SelectionDAG has 46 nodes:
  0x3e7e2f0: ch = EntryToken [ID=-3]

  0x3ea43d0: i32 = FrameIndex<1> [ID=-3]

  0x3ea45e0: i32 = undef [ID=-3]

  0x3ea47f0: i32 = FrameIndex<2> [ID=-3]

  0x3ea4b08: i32 = FrameIndex<0> [ID=-3]

        0x3ea8520: <multiple use>
        0x3ea7b70: <multiple use>
      0x3ea7a68: ch = TokenFactor 0x3ea8520:1, 0x3ea7b70:1 [ORD=5] [ID=-3]

        0x3ea7648: <multiple use>
        0x3ea7540: <multiple use>
      0x3ea7438: ch = TokenFactor 0x3ea7648:1, 0x3ea7540:1 [ORD=5] [ID=-3]

    0x3ea6f10: ch = TokenFactor 0x3ea7a68, 0x3ea7438 [ORD=5] [ID=-3]

        0x3eab3a0: <multiple use>
        0x3eab190: <multiple use>
      0x3eaae78: ch = TokenFactor 0x3eab3a0:1, 0x3eab190:1 [ORD=6] [ID=-3]

        0x3eaa950: <multiple use>
        0x3ea9288: <multiple use>
      0x3ea8f70: ch = TokenFactor 0x3eaa950:1, 0x3ea9288:1 [ORD=6] [ID=-3]

    0x3ea8940: ch = TokenFactor 0x3eaae78, 0x3ea8f70 [ORD=6] [ID=-3]

  0x3ea4c10: ch = TokenFactor 0x3ea6f10, 0x3ea8940 [ORD=8] [ID=-3]

  0x3ea4e20: i32 = Register %R11 [ID=-3]

          0x3ea4c10: <multiple use>
            0x3ea8520: <multiple use>
            0x3eab3a0: <multiple use>
          0x3eab4a8: i32 = add 0x3ea8520, 0x3eab3a0 [ORD=7] [ID=-3]

          0x3ea4b08: <multiple use>
          0x3ea45e0: <multiple use>
        0x3eac5c0: ch = store 0x3ea4c10, 0x3eab4a8, 0x3ea4b08,
0x3ea45e0<ST4[%z]> [ORD=8] [ID=-3]

          0x3ea4c10: <multiple use>
            0x3ea7b70: <multiple use>
            0x3eab190: <multiple use>
          0x3eab298: i32 = add 0x3ea7b70, 0x3eab190 [ORD=7] [ID=-3]

            0x3ea4b08: <multiple use>
            0x3ea7120: <multiple use>
          0x3eac1a0: i32 = add 0x3ea4b08, 0x3ea7120 [ORD=8] [ID=-3]

          0x3ea45e0: <multiple use>
        0x3eac4b8: ch = store 0x3ea4c10, 0x3eab298, 0x3eac1a0,
0x3ea45e0<ST4[%z+4]> [ORD=8] [ID=-3]

      0x3eac3b0: ch = TokenFactor 0x3eac5c0, 0x3eac4b8 [ORD=8] [ID=-3]

          0x3ea4c10: <multiple use>
            0x3ea7648: <multiple use>
            0x3eaa950: <multiple use>
          0x3eaaa58: i32 = add 0x3ea7648, 0x3eaa950 [ORD=7] [ID=-3]

          0x3eab6b8: <multiple use>
          0x3ea45e0: <multiple use>
        0x3eabf90: ch = store 0x3ea4c10, 0x3eaaa58, 0x3eab6b8,
0x3ea45e0<ST4[%z+8]> [ORD=8] [ID=-3]

          0x3ea4c10: <multiple use>
            0x3ea7540: <multiple use>
            0x3ea9288: <multiple use>
          0x3ea9390: i32 = add 0x3ea7540, 0x3ea9288 [ORD=7] [ID=-3]

            0x3eab6b8: <multiple use>
            0x3ea7120: <multiple use>
          0x3eabb70: i32 = add 0x3eab6b8, 0x3ea7120 [ORD=8] [ID=-3]

          0x3ea45e0: <multiple use>
        0x3eabe88: ch = store 0x3ea4c10, 0x3ea9390, 0x3eabb70,
0x3ea45e0<ST4[%z+12]> [ORD=8] [ID=-3]

      0x3eabd80: ch = TokenFactor 0x3eabf90, 0x3eabe88 [ORD=8] [ID=-3]

    0x3eab960: ch = TokenFactor 0x3eac3b0, 0x3eabd80 [ORD=8] [ID=-3]

    0x3ea4e20: <multiple use>
    0x3ea44d8: i32 = Constant<0> [ID=-3]

  0x3ea4f28: ch,glue = CopyToReg 0x3eab960, 0x3ea4e20, 0x3ea44d8 [ORD=9]
[ID=-3]

  0x3ea5240: i32 = Constant<8> [ID=-3]

    0x3ea43d0: <multiple use>
    0x3ea5240: <multiple use>
  0x3ea6d00: i32 = add 0x3ea43d0, 0x3ea5240 [ORD=5] [ID=-3]

  0x3ea7120: i32 = Constant<4> [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea6d00: <multiple use>
      0x3ea7120: <multiple use>
    0x3ea7228: i32 = add 0x3ea6d00, 0x3ea7120 [ORD=5] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3ea7540: i32,ch = load 0x3e7e2f0, 0x3ea7228, 0x3ea45e0<LD4[%a+12]>
[ORD=5] [ID=-3]

    0x3e7e2f0: <multiple use>
    0x3ea6d00: <multiple use>
    0x3ea45e0: <multiple use>
  0x3ea7648: i32,ch = load 0x3e7e2f0, 0x3ea6d00, 0x3ea45e0<LD4[%a+8]>
[ORD=5] [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea7120: <multiple use>
    0x3ea7858: i32 = add 0x3ea43d0, 0x3ea7120 [ORD=5] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3ea7b70: i32,ch = load 0x3e7e2f0, 0x3ea7858, 0x3ea45e0<LD4[%a+4]>
[ORD=5] [ID=-3]

    0x3e7e2f0: <multiple use>
    0x3ea43d0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3ea8520: i32,ch = load 0x3e7e2f0, 0x3ea43d0, 0x3ea45e0<LD4[%a]> [ORD=5]
[ID=-3]

    0x3ea47f0: <multiple use>
    0x3ea5240: <multiple use>
  0x3ea8730: i32 = add 0x3ea47f0, 0x3ea5240 [ORD=6] [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea8730: <multiple use>
      0x3ea7120: <multiple use>
    0x3ea8d60: i32 = add 0x3ea8730, 0x3ea7120 [ORD=6] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3ea9288: i32,ch = load 0x3e7e2f0, 0x3ea8d60, 0x3ea45e0<LD4[%b+12]>
[ORD=6] [ID=-3]

    0x3e7e2f0: <multiple use>
    0x3ea8730: <multiple use>
    0x3ea45e0: <multiple use>
  0x3eaa950: i32,ch = load 0x3e7e2f0, 0x3ea8730, 0x3ea45e0<LD4[%b+8]>
[ORD=6] [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea7120: <multiple use>
    0x3eaac68: i32 = add 0x3ea47f0, 0x3ea7120 [ORD=6] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3eab190: i32,ch = load 0x3e7e2f0, 0x3eaac68, 0x3ea45e0<LD4[%b+4]>
[ORD=6] [ID=-3]

    0x3e7e2f0: <multiple use>
    0x3ea47f0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3eab3a0: i32,ch = load 0x3e7e2f0, 0x3ea47f0, 0x3ea45e0<LD4[%b]> [ORD=6]
[ID=-3]

    0x3ea4b08: <multiple use>
    0x3ea5240: <multiple use>
  0x3eab6b8: i32 = add 0x3ea4b08, 0x3ea5240 [ORD=8] [ID=-3]

    0x3ea4f28: <multiple use>
    0x3ea4e20: <multiple use>
    0x3ea4f28: <multiple use>
  0x3ea5030: ch = EsenciaISD::RET_FLAG 0x3ea4f28, 0x3ea4e20, 0x3ea4f28:1
[ORD=9] [ID=-3]


Optimized type-legalized selection DAG: BB#0 'main:entry'
SelectionDAG has 39 nodes:
  0x3e7e2f0: ch = EntryToken [ID=-3]

  0x3ea43d0: i32 = FrameIndex<1> [ID=-3]

  0x3ea45e0: i32 = undef [ID=-3]

  0x3ea47f0: i32 = FrameIndex<2> [ID=-3]

  0x3ea4b08: i32 = FrameIndex<0> [ID=-3]

  0x3ea4e20: i32 = Register %R11 [ID=-3]

        0x3ea7a68: <multiple use>
          0x3ea8520: <multiple use>
          0x3eab3a0: <multiple use>
        0x3eab4a8: i32 = add 0x3ea8520, 0x3eab3a0 [ORD=7] [ID=-3]

        0x3ea4b08: <multiple use>
        0x3ea45e0: <multiple use>
      0x3eac5c0: ch = store 0x3ea7a68, 0x3eab4a8, 0x3ea4b08,
0x3ea45e0<ST4[%z]> [ORD=8] [ID=-3]

        0x3ea7a68: <multiple use>
          0x3ea7b70: <multiple use>
          0x3eab190: <multiple use>
        0x3eab298: i32 = add 0x3ea7b70, 0x3eab190 [ORD=7] [ID=-3]

          0x3ea4b08: <multiple use>
          0x3ea7120: <multiple use>
        0x3eac1a0: i32 = add 0x3ea4b08, 0x3ea7120 [ORD=8] [ID=-3]

        0x3ea45e0: <multiple use>
      0x3eac4b8: ch = store 0x3ea7a68, 0x3eab298, 0x3eac1a0,
0x3ea45e0<ST4[%z+4]> [ORD=8] [ID=-3]

        0x3ea7a68: <multiple use>
          0x3ea7648: <multiple use>
          0x3eaa950: <multiple use>
        0x3eaaa58: i32 = add 0x3ea7648, 0x3eaa950 [ORD=7] [ID=-3]

          0x3ea4b08: <multiple use>
          0x3ea5240: <multiple use>
        0x3eab6b8: i32 = add 0x3ea4b08, 0x3ea5240 [ORD=8] [ID=-3]

        0x3ea45e0: <multiple use>
      0x3eabf90: ch = store 0x3ea7a68, 0x3eaaa58, 0x3eab6b8,
0x3ea45e0<ST4[%z+8]> [ORD=8] [ID=-3]

        0x3ea7a68: <multiple use>
          0x3ea7540: <multiple use>
          0x3ea9288: <multiple use>
        0x3ea9390: i32 = add 0x3ea7540, 0x3ea9288 [ORD=7] [ID=-3]

          0x3ea4b08: <multiple use>
          0x3ea46e8: <multiple use>
        0x3ea48f8: i32 = add 0x3ea4b08, 0x3ea46e8 [ORD=8]

        0x3ea45e0: <multiple use>
      0x3eabe88: ch = store 0x3ea7a68, 0x3ea9390, 0x3ea48f8,
0x3ea45e0<ST4[%z+12]> [ORD=8] [ID=-3]

    0x3eabb70: ch = TokenFactor 0x3eac5c0, 0x3eac4b8, 0x3eabf90, 0x3eabe88
[ORD=8]

    0x3ea4e20: <multiple use>
    0x3ea44d8: i32 = Constant<0> [ID=-3]

  0x3ea4f28: ch,glue = CopyToReg 0x3eabb70, 0x3ea4e20, 0x3ea44d8 [ORD=9]
[ID=-3]

  0x3ea5240: i32 = Constant<8> [ID=-3]

  0x3ea7120: i32 = Constant<4> [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea46e8: <multiple use>
    0x3eaae78: i32 = add 0x3ea43d0, 0x3ea46e8 [ORD=5]

    0x3ea45e0: <multiple use>
  0x3ea7540: i32,ch = load 0x3e7e2f0, 0x3eaae78, 0x3ea45e0<LD4[%a+12]>
[ORD=5] [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea5240: <multiple use>
    0x3ea6d00: i32 = add 0x3ea43d0, 0x3ea5240 [ORD=5] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3ea7648: i32,ch = load 0x3e7e2f0, 0x3ea6d00, 0x3ea45e0<LD4[%a+8]>
[ORD=5] [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea7120: <multiple use>
    0x3ea7858: i32 = add 0x3ea43d0, 0x3ea7120 [ORD=5] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3ea7b70: i32,ch = load 0x3e7e2f0, 0x3ea7858, 0x3ea45e0<LD4[%a+4]>
[ORD=5] [ID=-3]

    0x3e7e2f0: <multiple use>
    0x3ea43d0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3ea8520: i32,ch = load 0x3e7e2f0, 0x3ea43d0, 0x3ea45e0<LD4[%a]> [ORD=5]
[ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea46e8: <multiple use>
    0x3eac3b0: i32 = add 0x3ea47f0, 0x3ea46e8 [ORD=6]

    0x3ea45e0: <multiple use>
  0x3ea9288: i32,ch = load 0x3e7e2f0, 0x3eac3b0, 0x3ea45e0<LD4[%b+12]>
[ORD=6] [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea5240: <multiple use>
    0x3ea8730: i32 = add 0x3ea47f0, 0x3ea5240 [ORD=6] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3eaa950: i32,ch = load 0x3e7e2f0, 0x3ea8730, 0x3ea45e0<LD4[%b+8]>
[ORD=6] [ID=-3]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea7120: <multiple use>
    0x3eaac68: i32 = add 0x3ea47f0, 0x3ea7120 [ORD=6] [ID=-3]

    0x3ea45e0: <multiple use>
  0x3eab190: i32,ch = load 0x3e7e2f0, 0x3eaac68, 0x3ea45e0<LD4[%b+4]>
[ORD=6] [ID=-3]

    0x3e7e2f0: <multiple use>
    0x3ea47f0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3eab3a0: i32,ch = load 0x3e7e2f0, 0x3ea47f0, 0x3ea45e0<LD4[%b]> [ORD=6]
[ID=-3]

  0x3ea46e8: i32 = Constant<12>

    0x3ea8520: <multiple use>
    0x3ea7b70: <multiple use>
    0x3ea7648: <multiple use>
    0x3ea7540: <multiple use>
    0x3eab3a0: <multiple use>
    0x3eab190: <multiple use>
    0x3eaa950: <multiple use>
    0x3ea9288: <multiple use>
  0x3ea7a68: ch = TokenFactor 0x3ea8520:1, 0x3ea7b70:1, 0x3ea7648:1,
0x3ea7540:1, 0x3eab3a0:1, 0x3eab190:1, 0x3eaa950:1, 0x3ea9288:1 [ORD=8]

    0x3ea4f28: <multiple use>
    0x3ea4e20: <multiple use>
    0x3ea4f28: <multiple use>
  0x3ea5030: ch = EsenciaISD::RET_FLAG 0x3ea4f28, 0x3ea4e20, 0x3ea4f28:1
[ORD=9] [ID=-3]


Legalized selection DAG: BB#0 'main:entry'
SelectionDAG has 39 nodes:
  0x3e7e2f0: ch = EntryToken [ID=0]

  0x3ea43d0: i32 = FrameIndex<1> [ID=1]

  0x3ea45e0: i32 = undef [ID=3]

  0x3ea47f0: i32 = FrameIndex<2> [ID=4]

  0x3ea4b08: i32 = FrameIndex<0> [ID=5]

  0x3ea4e20: i32 = Register %R11 [ID=6]

  0x3ea5240: i32 = Constant<8> [ID=7]

  0x3ea7120: i32 = Constant<4> [ID=8]

  0x3ea46e8: i32 = Constant<12> [ID=9]

    0x3e7e2f0: <multiple use>
    0x3ea43d0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3ea8520: i32,ch = load 0x3e7e2f0, 0x3ea43d0, 0x3ea45e0<LD4[%a]> [ORD=5]
[ID=10]

    0x3e7e2f0: <multiple use>
    0x3ea47f0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3eab3a0: i32,ch = load 0x3e7e2f0, 0x3ea47f0, 0x3ea45e0<LD4[%b]> [ORD=6]
[ID=11]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea5240: <multiple use>
    0x3ea8730: i32 = add 0x3ea47f0, 0x3ea5240 [ORD=6] [ID=13]

    0x3ea45e0: <multiple use>
  0x3eaa950: i32,ch = load 0x3e7e2f0, 0x3ea8730, 0x3ea45e0<LD4[%b+8]>
[ORD=6] [ID=22]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea5240: <multiple use>
    0x3ea6d00: i32 = add 0x3ea43d0, 0x3ea5240 [ORD=5] [ID=14]

    0x3ea45e0: <multiple use>
  0x3ea7648: i32,ch = load 0x3e7e2f0, 0x3ea6d00, 0x3ea45e0<LD4[%a+8]>
[ORD=5] [ID=23]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea7120: <multiple use>
    0x3eaac68: i32 = add 0x3ea47f0, 0x3ea7120 [ORD=6] [ID=16]

    0x3ea45e0: <multiple use>
  0x3eab190: i32,ch = load 0x3e7e2f0, 0x3eaac68, 0x3ea45e0<LD4[%b+4]>
[ORD=6] [ID=24]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea7120: <multiple use>
    0x3ea7858: i32 = add 0x3ea43d0, 0x3ea7120 [ORD=5] [ID=17]

    0x3ea45e0: <multiple use>
  0x3ea7b70: i32,ch = load 0x3e7e2f0, 0x3ea7858, 0x3ea45e0<LD4[%a+4]>
[ORD=5] [ID=25]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea46e8: <multiple use>
    0x3eaae78: i32 = add 0x3ea43d0, 0x3ea46e8 [ORD=5] [ID=18]

    0x3ea45e0: <multiple use>
  0x3ea7540: i32,ch = load 0x3e7e2f0, 0x3eaae78, 0x3ea45e0<LD4[%a+12]>
[ORD=5] [ID=26]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea46e8: <multiple use>
    0x3eac3b0: i32 = add 0x3ea47f0, 0x3ea46e8 [ORD=6] [ID=19]

    0x3ea45e0: <multiple use>
  0x3ea9288: i32,ch = load 0x3e7e2f0, 0x3eac3b0, 0x3ea45e0<LD4[%b+12]>
[ORD=6] [ID=27]

    0x3ea8520: <multiple use>
    0x3ea7b70: <multiple use>
    0x3ea7648: <multiple use>
    0x3ea7540: <multiple use>
    0x3eab3a0: <multiple use>
    0x3eab190: <multiple use>
    0x3eaa950: <multiple use>
    0x3ea9288: <multiple use>
  0x3ea7a68: ch = TokenFactor 0x3ea8520:1, 0x3ea7b70:1, 0x3ea7648:1,
0x3ea7540:1, 0x3eab3a0:1, 0x3eab190:1, 0x3eaa950:1, 0x3ea9288:1 [ORD=8]
[ID=30]

        0x3ea7a68: <multiple use>
          0x3ea8520: <multiple use>
          0x3eab3a0: <multiple use>
        0x3eab4a8: i32 = add 0x3ea8520, 0x3eab3a0 [ORD=7] [ID=21]

        0x3ea4b08: <multiple use>
        0x3ea45e0: <multiple use>
      0x3eac5c0: ch = store 0x3ea7a68, 0x3eab4a8, 0x3ea4b08,
0x3ea45e0<ST4[%z]> [ORD=8] [ID=34]

        0x3ea7a68: <multiple use>
          0x3ea7b70: <multiple use>
          0x3eab190: <multiple use>
        0x3eab298: i32 = add 0x3ea7b70, 0x3eab190 [ORD=7] [ID=29]

          0x3ea4b08: <multiple use>
          0x3ea7120: <multiple use>
        0x3eac1a0: i32 = add 0x3ea4b08, 0x3ea7120 [ORD=8] [ID=15]

        0x3ea45e0: <multiple use>
      0x3eac4b8: ch = store 0x3ea7a68, 0x3eab298, 0x3eac1a0,
0x3ea45e0<ST4[%z+4]> [ORD=8] [ID=33]

        0x3ea7a68: <multiple use>
          0x3ea7648: <multiple use>
          0x3eaa950: <multiple use>
        0x3eaaa58: i32 = add 0x3ea7648, 0x3eaa950 [ORD=7] [ID=28]

          0x3ea4b08: <multiple use>
          0x3ea5240: <multiple use>
        0x3eab6b8: i32 = add 0x3ea4b08, 0x3ea5240 [ORD=8] [ID=12]

        0x3ea45e0: <multiple use>
      0x3eabf90: ch = store 0x3ea7a68, 0x3eaaa58, 0x3eab6b8,
0x3ea45e0<ST4[%z+8]> [ORD=8] [ID=32]

        0x3ea7a68: <multiple use>
          0x3ea7540: <multiple use>
          0x3ea9288: <multiple use>
        0x3ea9390: i32 = add 0x3ea7540, 0x3ea9288 [ORD=7] [ID=31]

          0x3ea4b08: <multiple use>
          0x3ea46e8: <multiple use>
        0x3ea48f8: i32 = add 0x3ea4b08, 0x3ea46e8 [ORD=8] [ID=20]

        0x3ea45e0: <multiple use>
      0x3eabe88: ch = store 0x3ea7a68, 0x3ea9390, 0x3ea48f8,
0x3ea45e0<ST4[%z+12]> [ORD=8] [ID=35]

    0x3eabb70: ch = TokenFactor 0x3eac5c0, 0x3eac4b8, 0x3eabf90, 0x3eabe88
[ORD=8] [ID=36]

    0x3ea4e20: <multiple use>
    0x3ea44d8: i32 = Constant<0> [ID=2]

  0x3ea4f28: ch,glue = CopyToReg 0x3eabb70, 0x3ea4e20, 0x3ea44d8 [ORD=9]
[ID=37]

    0x3ea4f28: <multiple use>
    0x3ea4e20: <multiple use>
    0x3ea4f28: <multiple use>
  0x3ea5030: ch = EsenciaISD::RET_FLAG 0x3ea4f28, 0x3ea4e20, 0x3ea4f28:1
[ORD=9] [ID=38]


Optimized legalized selection DAG: BB#0 'main:entry'
SelectionDAG has 39 nodes:
  0x3e7e2f0: ch = EntryToken [ID=0]

  0x3ea43d0: i32 = FrameIndex<1> [ID=1]

  0x3ea45e0: i32 = undef [ID=3]

  0x3ea47f0: i32 = FrameIndex<2> [ID=4]

  0x3ea4b08: i32 = FrameIndex<0> [ID=5]

  0x3ea4e20: i32 = Register %R11 [ID=6]

  0x3ea5240: i32 = Constant<8> [ID=7]

  0x3ea7120: i32 = Constant<4> [ID=8]

  0x3ea46e8: i32 = Constant<12> [ID=9]

    0x3e7e2f0: <multiple use>
    0x3ea43d0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3ea8520: i32,ch = load 0x3e7e2f0, 0x3ea43d0, 0x3ea45e0<LD4[%a]> [ORD=5]
[ID=10]

    0x3e7e2f0: <multiple use>
    0x3ea47f0: <multiple use>
    0x3ea45e0: <multiple use>
  0x3eab3a0: i32,ch = load 0x3e7e2f0, 0x3ea47f0, 0x3ea45e0<LD4[%b]> [ORD=6]
[ID=11]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea5240: <multiple use>
    0x3ea8730: i32 = add 0x3ea47f0, 0x3ea5240 [ORD=6] [ID=13]

    0x3ea45e0: <multiple use>
  0x3eaa950: i32,ch = load 0x3e7e2f0, 0x3ea8730, 0x3ea45e0<LD4[%b+8]>
[ORD=6] [ID=22]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea5240: <multiple use>
    0x3ea6d00: i32 = add 0x3ea43d0, 0x3ea5240 [ORD=5] [ID=14]

    0x3ea45e0: <multiple use>
  0x3ea7648: i32,ch = load 0x3e7e2f0, 0x3ea6d00, 0x3ea45e0<LD4[%a+8]>
[ORD=5] [ID=23]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea7120: <multiple use>
    0x3eaac68: i32 = add 0x3ea47f0, 0x3ea7120 [ORD=6] [ID=16]

    0x3ea45e0: <multiple use>
  0x3eab190: i32,ch = load 0x3e7e2f0, 0x3eaac68, 0x3ea45e0<LD4[%b+4]>
[ORD=6] [ID=24]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea7120: <multiple use>
    0x3ea7858: i32 = add 0x3ea43d0, 0x3ea7120 [ORD=5] [ID=17]

    0x3ea45e0: <multiple use>
  0x3ea7b70: i32,ch = load 0x3e7e2f0, 0x3ea7858, 0x3ea45e0<LD4[%a+4]>
[ORD=5] [ID=25]

    0x3e7e2f0: <multiple use>
      0x3ea43d0: <multiple use>
      0x3ea46e8: <multiple use>
    0x3eaae78: i32 = add 0x3ea43d0, 0x3ea46e8 [ORD=5] [ID=18]

    0x3ea45e0: <multiple use>
  0x3ea7540: i32,ch = load 0x3e7e2f0, 0x3eaae78, 0x3ea45e0<LD4[%a+12]>
[ORD=5] [ID=26]

    0x3e7e2f0: <multiple use>
      0x3ea47f0: <multiple use>
      0x3ea46e8: <multiple use>
    0x3eac3b0: i32 = add 0x3ea47f0, 0x3ea46e8 [ORD=6] [ID=19]

    0x3ea45e0: <multiple use>
  0x3ea9288: i32,ch = load 0x3e7e2f0, 0x3eac3b0, 0x3ea45e0<LD4[%b+12]>
[ORD=6] [ID=27]

    0x3ea8520: <multiple use>
    0x3ea7b70: <multiple use>
    0x3ea7648: <multiple use>
    0x3ea7540: <multiple use>
    0x3eab3a0: <multiple use>
    0x3eab190: <multiple use>
    0x3eaa950: <multiple use>
    0x3ea9288: <multiple use>
  0x3ea7a68: ch = TokenFactor 0x3ea8520:1, 0x3ea7b70:1, 0x3ea7648:1,
0x3ea7540:1, 0x3eab3a0:1, 0x3eab190:1, 0x3eaa950:1, 0x3ea9288:1 [ORD=8]
[ID=30]

        0x3ea7a68: <multiple use>
          0x3ea8520: <multiple use>
          0x3eab3a0: <multiple use>
        0x3eab4a8: i32 = add 0x3ea8520, 0x3eab3a0 [ORD=7] [ID=21]

        0x3ea4b08: <multiple use>
        0x3ea45e0: <multiple use>
      0x3eac5c0: ch = store 0x3ea7a68, 0x3eab4a8, 0x3ea4b08,
0x3ea45e0<ST4[%z]> [ORD=8] [ID=34]

        0x3ea7a68: <multiple use>
          0x3ea7b70: <multiple use>
          0x3eab190: <multiple use>
        0x3eab298: i32 = add 0x3ea7b70, 0x3eab190 [ORD=7] [ID=29]

          0x3ea4b08: <multiple use>
          0x3ea7120: <multiple use>
        0x3eac1a0: i32 = add 0x3ea4b08, 0x3ea7120 [ORD=8] [ID=15]

        0x3ea45e0: <multiple use>
      0x3eac4b8: ch = store 0x3ea7a68, 0x3eab298, 0x3eac1a0,
0x3ea45e0<ST4[%z+4]> [ORD=8] [ID=33]

        0x3ea7a68: <multiple use>
          0x3ea7648: <multiple use>
          0x3eaa950: <multiple use>
        0x3eaaa58: i32 = add 0x3ea7648, 0x3eaa950 [ORD=7] [ID=28]

          0x3ea4b08: <multiple use>
          0x3ea5240: <multiple use>
        0x3eab6b8: i32 = add 0x3ea4b08, 0x3ea5240 [ORD=8] [ID=12]

        0x3ea45e0: <multiple use>
      0x3eabf90: ch = store 0x3ea7a68, 0x3eaaa58, 0x3eab6b8,
0x3ea45e0<ST4[%z+8]> [ORD=8] [ID=32]

        0x3ea7a68: <multiple use>
          0x3ea7540: <multiple use>
          0x3ea9288: <multiple use>
        0x3ea9390: i32 = add 0x3ea7540, 0x3ea9288 [ORD=7] [ID=31]

          0x3ea4b08: <multiple use>
          0x3ea46e8: <multiple use>
        0x3ea48f8: i32 = add 0x3ea4b08, 0x3ea46e8 [ORD=8] [ID=20]

        0x3ea45e0: <multiple use>
      0x3eabe88: ch = store 0x3ea7a68, 0x3ea9390, 0x3ea48f8,
0x3ea45e0<ST4[%z+12]> [ORD=8] [ID=35]

    0x3eabb70: ch = TokenFactor 0x3eac5c0, 0x3eac4b8, 0x3eabf90, 0x3eabe88
[ORD=8] [ID=36]

    0x3ea4e20: <multiple use>
    0x3ea44d8: i32 = Constant<0> [ID=2]

  0x3ea4f28: ch,glue = CopyToReg 0x3eabb70, 0x3ea4e20, 0x3ea44d8 [ORD=9]
[ID=37]

    0x3ea4f28: <multiple use>
    0x3ea4e20: <multiple use>
    0x3ea4f28: <multiple use>
  0x3ea5030: ch = EsenciaISD::RET_FLAG 0x3ea4f28, 0x3ea4e20, 0x3ea4f28:1
[ORD=9] [ID=38]


===== Instruction selection begins: BB#0 'entry'
ISEL: Starting pattern match on root node: 0x3ea5030: ch =
EsenciaISD::RET_FLAG 0x3ea4f28, 0x3ea4e20, 0x3ea4f28:1 [ORD=9] [ID=38]

  Morphed node: 0x3ea5030: ch = RET 0x3ea4e20, 0x3ea4f28, 0x3ea4f28:1
[ORD=9]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eabe88: ch = store 0x3ea7a68,
0x3ea9390, 0x3ea48f8, 0x3ea45e0<ST4[%z+12]> [ORD=8] [ID=35]

  Initial Opcode index to 4
  Morphed node: 0x3eabe88: ch = SW 0x3ea9390, 0x3ea7228, 0x3ea8d60,
0x3ea7a68<Mem:ST4[%z+12]> [ORD=8]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eac5c0: ch = store 0x3ea7a68,
0x3eab4a8, 0x3ea4b08, 0x3ea45e0<ST4[%z]> [ORD=8] [ID=34]

  Initial Opcode index to 4
  Morphed node: 0x3eac5c0: ch = SW 0x3eab4a8, 0x3ea7228, 0x3ea48f8,
0x3ea7a68<Mem:ST4[%z]> [ORD=8]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eac4b8: ch = store 0x3ea7a68,
0x3eab298, 0x3eac1a0, 0x3ea45e0<ST4[%z+4]> [ORD=8] [ID=33]

  Initial Opcode index to 4
  Morphed node: 0x3eac4b8: ch = SW 0x3eab298, 0x3ea7228, 0x3ea4c10,
0x3ea7a68<Mem:ST4[%z+4]> [ORD=8]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eabf90: ch = store 0x3ea7a68,
0x3eaaa58, 0x3eab6b8, 0x3ea45e0<ST4[%z+8]> [ORD=8] [ID=32]

  Initial Opcode index to 4
  Morphed node: 0x3eabf90: ch = SW 0x3eaaa58, 0x3ea7228, 0x3eac1a0,
0x3ea7a68<Mem:ST4[%z+8]> [ORD=8]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3ea9390: i32 = add 0x3ea7540,
0x3ea9288 [ORD=7] [ID=31]

  Initial Opcode index to 1084
  Match failed at index 1090
  Continuing at 1122
  Morphed node: 0x3ea9390: i32 = ADD 0x3ea7540, 0x3ea9288 [ORD=7]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eab298: i32 = add 0x3ea7b70,
0x3eab190 [ORD=7] [ID=29]

  Initial Opcode index to 1084
  Match failed at index 1090
  Continuing at 1122
  Morphed node: 0x3eab298: i32 = ADD 0x3ea7b70, 0x3eab190 [ORD=7]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eaaa58: i32 = add 0x3ea7648,
0x3eaa950 [ORD=7] [ID=28]

  Initial Opcode index to 1084
  Match failed at index 1090
  Continuing at 1122
  Morphed node: 0x3eaaa58: i32 = ADD 0x3ea7648, 0x3eaa950 [ORD=7]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3ea9288: i32,ch = load
0x3e7e2f0, 0x3eac3b0, 0x3ea45e0<LD4[%b+12]> [ORD=6] [ID=27]

  Initial Opcode index to 122
  Morphed node: 0x3ea9288: i32,ch = LWZ 0x3ea4b08, 0x3ea8d60,
0x3e7e2f0<Mem:LD4[%b+12]> [ORD=6]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3ea7540: i32,ch = load
0x3e7e2f0, 0x3eaae78, 0x3ea45e0<LD4[%a+12]> [ORD=5] [ID=26]

  Initial Opcode index to 122
  Morphed node: 0x3ea7540: i32,ch = LWZ 0x3eac3b0, 0x3ea8d60,
0x3e7e2f0<Mem:LD4[%a+12]> [ORD=5]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3ea7b70: i32,ch = load
0x3e7e2f0, 0x3ea7858, 0x3ea45e0<LD4[%a+4]> [ORD=5] [ID=25]

  Initial Opcode index to 122
  Morphed node: 0x3ea7b70: i32,ch = LWZ 0x3eac3b0, 0x3ea4c10,
0x3e7e2f0<Mem:LD4[%a+4]> [ORD=5]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eab190: i32,ch = load
0x3e7e2f0, 0x3eaac68, 0x3ea45e0<LD4[%b+4]> [ORD=6] [ID=24]

  Initial Opcode index to 122
  Morphed node: 0x3eab190: i32,ch = LWZ 0x3ea4b08, 0x3ea4c10,
0x3e7e2f0<Mem:LD4[%b+4]> [ORD=6]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3ea7648: i32,ch = load
0x3e7e2f0, 0x3ea6d00, 0x3ea45e0<LD4[%a+8]> [ORD=5] [ID=23]

  Initial Opcode index to 122
  Morphed node: 0x3ea7648: i32,ch = LWZ 0x3eac3b0, 0x3eac1a0,
0x3e7e2f0<Mem:LD4[%a+8]> [ORD=5]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eaa950: i32,ch = load
0x3e7e2f0, 0x3ea8730, 0x3ea45e0<LD4[%b+8]> [ORD=6] [ID=22]

  Initial Opcode index to 122
  Morphed node: 0x3eaa950: i32,ch = LWZ 0x3ea4b08, 0x3eac1a0,
0x3e7e2f0<Mem:LD4[%b+8]> [ORD=6]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eab4a8: i32 = add 0x3ea8520,
0x3eab3a0 [ORD=7] [ID=21]

  Initial Opcode index to 1084
  Match failed at index 1090
  Continuing at 1122
  Morphed node: 0x3eab4a8: i32 = ADD 0x3ea8520, 0x3eab3a0 [ORD=7]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3eab3a0: i32,ch = load
0x3e7e2f0, 0x3ea47f0, 0x3ea45e0<LD4[%b]> [ORD=6] [ID=11]

  Initial Opcode index to 122
  Morphed node: 0x3eab3a0: i32,ch = LWZ 0x3ea4b08, 0x3ea48f8,
0x3e7e2f0<Mem:LD4[%b]> [ORD=6]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3ea8520: i32,ch = load
0x3e7e2f0, 0x3ea43d0, 0x3ea45e0<LD4[%a]> [ORD=5] [ID=10]

  Initial Opcode index to 122
  Morphed node: 0x3ea8520: i32,ch = LWZ 0x3eac3b0, 0x3ea48f8,
0x3e7e2f0<Mem:LD4[%a]> [ORD=5]

ISEL: Match complete!
ISEL: Starting pattern match on root node: 0x3ea44d8: i32 = Constant<0>
[ID=2]

  Initial Opcode index to 1684
  Morphed node: 0x3ea44d8: i32 = MOVHI 0x3ea48f8

ISEL: Match complete!
===== Instruction selection ends:
Selected selection DAG: BB#0 'main:entry'
SelectionDAG has 30 nodes:
  0x3e7e2f0: ch = EntryToken

  0x3ea4e20: i32 = Register %R11

    0x3eac3b0: <multiple use>
    0x3ea48f8: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3ea8520: i32,ch = LWZ 0x3eac3b0, 0x3ea48f8, 0x3e7e2f0<Mem:LD4[%a]>
[ORD=5]

    0x3ea4b08: <multiple use>
    0x3ea48f8: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3eab3a0: i32,ch = LWZ 0x3ea4b08, 0x3ea48f8, 0x3e7e2f0<Mem:LD4[%b]>
[ORD=6]

    0x3ea4b08: <multiple use>
    0x3eac1a0: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3eaa950: i32,ch = LWZ 0x3ea4b08, 0x3eac1a0, 0x3e7e2f0<Mem:LD4[%b+8]>
[ORD=6]

    0x3eac3b0: <multiple use>
    0x3eac1a0: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3ea7648: i32,ch = LWZ 0x3eac3b0, 0x3eac1a0, 0x3e7e2f0<Mem:LD4[%a+8]>
[ORD=5]

    0x3ea4b08: <multiple use>
    0x3ea4c10: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3eab190: i32,ch = LWZ 0x3ea4b08, 0x3ea4c10, 0x3e7e2f0<Mem:LD4[%b+4]>
[ORD=6]

    0x3eac3b0: <multiple use>
    0x3ea4c10: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3ea7b70: i32,ch = LWZ 0x3eac3b0, 0x3ea4c10, 0x3e7e2f0<Mem:LD4[%a+4]>
[ORD=5]

    0x3eac3b0: <multiple use>
    0x3ea8d60: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3ea7540: i32,ch = LWZ 0x3eac3b0, 0x3ea8d60, 0x3e7e2f0<Mem:LD4[%a+12]>
[ORD=5]

    0x3ea4b08: <multiple use>
    0x3ea8d60: <multiple use>
    0x3e7e2f0: <multiple use>
  0x3ea9288: i32,ch = LWZ 0x3ea4b08, 0x3ea8d60, 0x3e7e2f0<Mem:LD4[%b+12]>
[ORD=6]

    0x3ea8520: <multiple use>
    0x3ea7b70: <multiple use>
    0x3ea7648: <multiple use>
    0x3ea7540: <multiple use>
    0x3eab3a0: <multiple use>
    0x3eab190: <multiple use>
    0x3eaa950: <multiple use>
    0x3ea9288: <multiple use>
  0x3ea7a68: ch = TokenFactor 0x3ea8520:1, 0x3ea7b70:1, 0x3ea7648:1,
0x3ea7540:1, 0x3eab3a0:1, 0x3eab190:1, 0x3eaa950:1, 0x3ea9288:1 [ORD=8]

          0x3ea8520: <multiple use>
          0x3eab3a0: <multiple use>
        0x3eab4a8: i32 = ADD 0x3ea8520, 0x3eab3a0 [ORD=7]

        0x3ea7228: <multiple use>
        0x3ea48f8: <multiple use>
        0x3ea7a68: <multiple use>
      0x3eac5c0: ch = SW 0x3eab4a8, 0x3ea7228, 0x3ea48f8,
0x3ea7a68<Mem:ST4[%z]> [ORD=8]

          0x3ea7b70: <multiple use>
          0x3eab190: <multiple use>
        0x3eab298: i32 = ADD 0x3ea7b70, 0x3eab190 [ORD=7]

        0x3ea7228: <multiple use>
        0x3ea4c10: <multiple use>
        0x3ea7a68: <multiple use>
      0x3eac4b8: ch = SW 0x3eab298, 0x3ea7228, 0x3ea4c10,
0x3ea7a68<Mem:ST4[%z+4]> [ORD=8]

          0x3ea7648: <multiple use>
          0x3eaa950: <multiple use>
        0x3eaaa58: i32 = ADD 0x3ea7648, 0x3eaa950 [ORD=7]

        0x3ea7228: <multiple use>
        0x3eac1a0: <multiple use>
        0x3ea7a68: <multiple use>
      0x3eabf90: ch = SW 0x3eaaa58, 0x3ea7228, 0x3eac1a0,
0x3ea7a68<Mem:ST4[%z+8]> [ORD=8]

          0x3ea7540: <multiple use>
          0x3ea9288: <multiple use>
        0x3ea9390: i32 = ADD 0x3ea7540, 0x3ea9288 [ORD=7]

        0x3ea7228: <multiple use>
        0x3ea8d60: <multiple use>
        0x3ea7a68: <multiple use>
      0x3eabe88: ch = SW 0x3ea9390, 0x3ea7228, 0x3ea8d60,
0x3ea7a68<Mem:ST4[%z+12]> [ORD=8]

    0x3eabb70: ch = TokenFactor 0x3eac5c0, 0x3eac4b8, 0x3eabf90, 0x3eabe88
[ORD=8]

    0x3ea4e20: <multiple use>
      0x3ea48f8: <multiple use>
    0x3ea44d8: i32 = MOVHI 0x3ea48f8

  0x3ea4f28: ch,glue = CopyToReg 0x3eabb70, 0x3ea4e20, 0x3ea44d8 [ORD=9]

  0x3ea7228: i32 = TargetFrameIndex<0>

  0x3ea8d60: i32 = TargetConstant<12>

  0x3ea48f8: i32 = TargetConstant<0>

  0x3ea4c10: i32 = TargetConstant<4>

  0x3eac1a0: i32 = TargetConstant<8>

  0x3ea4b08: i32 = TargetFrameIndex<2>

  0x3eac3b0: i32 = TargetFrameIndex<1>

    0x3ea4e20: <multiple use>
    0x3ea4f28: <multiple use>
    0x3ea4f28: <multiple use>
  0x3ea5030: ch = RET 0x3ea4e20, 0x3ea4f28, 0x3ea4f28:1 [ORD=9]


Total amount of phi nodes to update: 0
*** MachineFunction at end of ISel ***
# Machine code for function main: SSA
Frame Objects:
  fi#0: size=16, align=4, at location [SP]
  fi#1: size=16, align=4, at location [SP]
  fi#2: size=16, align=4, at location [SP]

BB#0: derived from LLVM BB %entry
%vreg0<def> = LWZ <fi#2>, 12; mem:LD4[%b+12] GPR:%vreg0
%vreg1<def> = LWZ <fi#1>, 12; mem:LD4[%a+12] GPR:%vreg1
%vreg2<def> = ADD %vreg1<kill>, %vreg0<kill>; GPR:%vreg2,%vreg1,%vreg0
%vreg3<def> = LWZ <fi#2>, 0; mem:LD4[%b] GPR:%vreg3
%vreg4<def> = LWZ <fi#1>, 0; mem:LD4[%a] GPR:%vreg4
%vreg5<def> = LWZ <fi#2>, 4; mem:LD4[%b+4] GPR:%vreg5
%vreg6<def> = LWZ <fi#1>, 4; mem:LD4[%a+4] GPR:%vreg6
%vreg7<def> = LWZ <fi#2>, 8; mem:LD4[%b+8] GPR:%vreg7
%vreg8<def> = LWZ <fi#1>, 8; mem:LD4[%a+8] GPR:%vreg8
SW %vreg2<kill>, <fi#0>, 12; mem:ST4[%z+12] GPR:%vreg2
%vreg9<def> = ADD %vreg8<kill>, %vreg7<kill>; GPR:%vreg9,%vreg8,%vreg7
SW %vreg9<kill>, <fi#0>, 8; mem:ST4[%z+8] GPR:%vreg9
%vreg10<def> = ADD %vreg6<kill>, %vreg5<kill>; GPR:%vreg10,%vreg6,%vreg5
SW %vreg10<kill>, <fi#0>, 4; mem:ST4[%z+4] GPR:%vreg10
%vreg11<def> = ADD %vreg4<kill>, %vreg3<kill>; GPR:%vreg11,%vreg4,%vreg3
SW %vreg11<kill>, <fi#0>, 0; mem:ST4[%z] GPR:%vreg11
%vreg12<def> = MOVHI 0; GPR:%vreg12
%R11<def> = COPY %vreg12; GPR:%vreg12
RET %R11<imp-use>

# End machine code for function main.

-- 
Rail Shafigulin
Software Engineer
Esencia Technologies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160315/8f133383/attachment-0001.html>


More information about the llvm-dev mailing list