| ; Show that we know how to translate move (immediate) ARM instruction. | 
 |  | 
 | ; REQUIRES: allow_dump | 
 |  | 
 | ; Compile using standalone assembler. | 
 | ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \ | 
 | ; RUN:   | FileCheck %s --check-prefix=ASM | 
 |  | 
 | ; Show bytes in assembled standalone code. | 
 | ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ | 
 | ; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS | 
 |  | 
 | ; Compile using integrated assembler. | 
 | ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \ | 
 | ; RUN:   | FileCheck %s --check-prefix=IASM | 
 |  | 
 | ; Show bytes in assembled integrated code. | 
 | ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ | 
 | ; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS | 
 |  | 
 | define internal i32 @Imm1() { | 
 |   ret i32 1 | 
 | } | 
 |  | 
 | ; ASM-LABEL: Imm1: | 
 | ; ASM: mov      r0, #1 | 
 |  | 
 | ; DIS-LABEL:00000000 <Imm1>: | 
 | ; DIS-NEXT:   0:        e3a00001 | 
 |  | 
 | ; IASM-LABEL: Imm1: | 
 | ; IASM: .byte 0x1 | 
 | ; IASM: .byte 0x0 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 |  | 
 | define internal i32 @rotateFImmAA() { | 
 |   ; immediate = 0x000002a8 = b 0000 0000 0000 0000 0000 0010 1010 1000 | 
 |   ret i32 680 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotateFImmAA: | 
 | ; ASM: mov      r0, #680 | 
 |  | 
 | ; DIS-LABEL:00000010 <rotateFImmAA>: | 
 | ; DIS-NEXT:  10:        e3a00faa | 
 |  | 
 | ; IASM-LABEL: rotateFImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0xf | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotateEImmAA() { | 
 |  ; immediate = 0x00000aa0 = b 0000 0000 0000 0000 0000 1010 1010 0000 | 
 |   ret i32 2720 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotateEImmAA: | 
 | ; ASM: mov      r0, #2720 | 
 |  | 
 | ; DIS-LABEL:00000020 <rotateEImmAA>: | 
 | ; DIS-NEXT:  20:        e3a00eaa | 
 |  | 
 | ; IASM-LABEL: rotateEImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0xe | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotateDImmAA() { | 
 |   ; immediate = 0x00002a80 = b 0000 0000 0000 0000 0010 1010 1000 0000 | 
 |   ret i32 10880 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotateDImmAA: | 
 | ; ASM: mov      r0, #10880 | 
 |  | 
 | ; DIS-LABEL:00000030 <rotateDImmAA>: | 
 | ; DIS-NEXT:  30:        e3a00daa | 
 |  | 
 | ; IASM-LABEL: rotateDImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0xd | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotateCImmAA() { | 
 |   ; immediate = 0x0000aa00 = b 0000 0000 0000 0000 1010 1010 0000 0000 | 
 |   ret i32 43520 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotateCImmAA: | 
 | ; ASM: mov      r0, #43520 | 
 |  | 
 | ; DIS-LABEL:00000040 <rotateCImmAA>: | 
 | ; DIS-NEXT:  40:        e3a00caa | 
 |  | 
 | ; IASM-LABEL: rotateCImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0xc | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotateBImmAA() { | 
 |   ; immediate = 0x0002a800 = b 0000 0000 0000 0010 1010 1000 0000 0000 | 
 |   ret i32 174080 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotateBImmAA: | 
 | ; ASM: mov      r0, #174080 | 
 |  | 
 | ; DIS-LABEL:00000050 <rotateBImmAA>: | 
 | ; DIS-NEXT:  50:        e3a00baa | 
 |  | 
 | ; IASM-LABEL: rotateBImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0xb | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotateAImmAA() { | 
 |   ; immediate = 0x000aa000 = b 0000 0000 0000 1010 1010 0000 0000 0000 | 
 |   ret i32 696320 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotateAImmAA: | 
 | ; ASM: mov      r0, #696320 | 
 |  | 
 | ; DIS-LABEL:00000060 <rotateAImmAA>: | 
 | ; DIS-NEXT:  60:        e3a00aaa | 
 |  | 
 | ; IASM-LABEL: rotateAImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0xa | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate9ImmAA() { | 
 |   ; immediate = 0x002a8000 = b 0000 0000 0010 1010 1000 0000 0000 0000 | 
 |   ret i32 2785280 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate9ImmAA: | 
 | ; ASM: mov      r0, #2785280 | 
 |  | 
 | ; DIS-LABEL:00000070 <rotate9ImmAA>: | 
 | ; DIS-NEXT:  70:        e3a009aa | 
 |  | 
 | ; IASM-LABEL: rotate9ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x9 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate8ImmAA() { | 
 |   ; immediate = 0x00aa0000 = b 0000 0000 1010 1010 0000 0000 0000 0000 | 
 |   ret i32 11141120 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate8ImmAA: | 
 | ; ASM: mov      r0, #11141120 | 
 |  | 
 | ; DIS-LABEL:00000080 <rotate8ImmAA>: | 
 | ; DIS-NEXT:  80:        e3a008aa | 
 |  | 
 | ; IASM-LABEL: rotate8ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x8 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate7ImmAA() { | 
 |   ; immediate = 0x02a80000 = b 0000 0010 1010 1000 0000 0000 0000 0000 | 
 |   ret i32 44564480 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate7ImmAA: | 
 | ; ASM:  mov     r0, #44564480 | 
 |  | 
 | ; DIS-LABEL:00000090 <rotate7ImmAA>: | 
 | ; DIS-NEXT:  90:        e3a007aa | 
 |  | 
 | ; IASM-LABEL: rotate7ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x7 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate6ImmAA() { | 
 |   ; immediate = 0x0aa00000 = b 0000 1010 1010 0000 0000 0000 0000 0000 | 
 |   ret i32 178257920 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate6ImmAA: | 
 | ; ASM:  mov     r0, #178257920 | 
 |  | 
 | ; DIS-LABEL:000000a0 <rotate6ImmAA>: | 
 | ; DIS-NEXT:  a0:        e3a006aa | 
 |  | 
 | ; IASM-LABEL: rotate6ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x6 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate5ImmAA() { | 
 |   ; immediate = 0x2a800000 = b 0010 1010 1000 0000 0000 0000 0000 0000 | 
 |   ret i32 713031680 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate5ImmAA: | 
 | ; ASM:  mov     r0, #713031680 | 
 |  | 
 | ; DIS-LABEL:000000b0 <rotate5ImmAA>: | 
 | ; DIS-NEXT:  b0:        e3a005aa | 
 |  | 
 | ; IASM-LABEL: rotate5ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x5 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate4ImmAA() { | 
 |   ; immediate = 0xaa000000 = b 1010 1010 0000 0000 0000 0000 0000 0000 | 
 |   ret i32 2852126720 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate4ImmAA: | 
 | ; ASM: mov      r0, #2852126720 | 
 |  | 
 | ; DIS-LABEL:000000c0 <rotate4ImmAA>: | 
 | ; DIS-NEXT:  c0:        e3a004aa | 
 |  | 
 | ; IASM-LABEL: rotate4ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x4 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate3ImmAA() { | 
 |   ; immediate = 0xa8000002 = b 1010 1000 0000 0000 0000 0000 0000 0010 | 
 |   ret i32 2818572290 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate3ImmAA: | 
 | ; ASM: mov      r0, #2818572290 | 
 |  | 
 | ; DIS-LABEL:000000d0 <rotate3ImmAA>: | 
 | ; DIS-NEXT:  d0:        e3a003aa | 
 |  | 
 | ; IASM-LABEL: rotate3ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x3 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate2ImmAA() { | 
 |   ; immediate = 0xa000000a = b 1010 0000 0000 0000 0000 0000 0000 1010 | 
 |   ret i32 2684354570 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate2ImmAA: | 
 | ; ASM:  mov     r0, #2684354570 | 
 |  | 
 | ; DIS-LABEL:000000e0 <rotate2ImmAA>: | 
 | ; DIS-NEXT:  e0:        e3a002aa | 
 |  | 
 | ; IASM-LABEL: rotate2ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x2 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate1ImmAA() { | 
 |   ; immediate = 0x8000002a = b 1000 1000 0000 0000 0000 0000 0010 1010 | 
 |   ret i32 2147483690 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate1ImmAA: | 
 | ; ASM: mov      r0, #2147483690 | 
 |  | 
 | ; DIS-LABEL:000000f0 <rotate1ImmAA>: | 
 | ; DIS-NEXT:  f0:        e3a001aa | 
 |  | 
 | ; IASM-LABEL: rotate1ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x1 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 | 
 |  | 
 | define internal i32 @rotate0ImmAA() { | 
 |   ; immediate = 0x000000aa = b 0000 0000 0000 0000 0000 0000 1010 1010 | 
 |   ret i32 170 | 
 | } | 
 |  | 
 | ; ASM-LABEL: rotate0ImmAA: | 
 | ; ASM: mov      r0, #170 | 
 |  | 
 | ; DIS-LABEL:00000100 <rotate0ImmAA>: | 
 | ; DIS-NEXT: 100:        e3a000aa | 
 |  | 
 | ; IASM-LABEL: rotate0ImmAA: | 
 | ; IASM: .byte 0xaa | 
 | ; IASM: .byte 0x0 | 
 | ; IASM: .byte 0xa0 | 
 | ; IASM: .byte 0xe3 |