1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
# RUN: llvm-mc %s -triple=mipsel -show-encoding -mattr=micromips -show-inst \
# RUN: | FileCheck -check-prefix=CHECK-EL %s
# RUN: llvm-mc %s -triple=mips -show-encoding -mattr=micromips -show-inst \
# RUN: | FileCheck -check-prefix=CHECK-EB %s
# Check that the assembler can handle the documented syntax
# for load and store instructions.
#------------------------------------------------------------------------------
# Load and Store Instructions
#------------------------------------------------------------------------------
# Little endian
#------------------------------------------------------------------------------
# CHECK-EL: lb $5, 8($4) # encoding: [0xa4,0x1c,0x08,0x00]
# CHECK-EL: lbu $6, 8($4) # encoding: [0xc4,0x14,0x08,0x00]
# CHECK-EL: lh $2, 8($4) # encoding: [0x44,0x3c,0x08,0x00]
# CHECK-EL: lhu $4, 8($2) # encoding: [0x82,0x34,0x08,0x00]
# CHECK-EL: lw $6, 4($5) # encoding: [0xc5,0xfc,0x04,0x00]
# CHECK-EL: lw $6, 123($sp) # encoding: [0xdd,0xfc,0x7b,0x00]
# CHECK-EL: sb $5, 8($4) # encoding: [0xa4,0x18,0x08,0x00]
# CHECK-EL: sh $2, 8($4) # encoding: [0x44,0x38,0x08,0x00]
# CHECK-EL: sw $5, 4($6) # encoding: [0xa6,0xf8,0x04,0x00]
# CHECK-EL: sw $5, 123($sp) # encoding: [0xbd,0xf8,0x7b,0x00]
# CHECK-EL: sw $3, 32($gp) # encoding: [0x7c,0xf8,0x20,0x00]
# CHECK-EL: ll $2, 8($4) # encoding: [0x44,0x60,0x08,0x30]
# CHECK-EL: sc $2, 8($4) # encoding: [0x44,0x60,0x08,0xb0]
# CHECK-EL: lwu $2, 8($4) # encoding: [0x44,0x60,0x08,0xe0]
# CHECK-EL: lwxs $2, $3($4) # encoding: [0x64,0x00,0x18,0x11]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWXS_MM
# CHECK-EL: lwm32 $16, $17, 8($4) # encoding: [0x44,0x20,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: lwm32 $16, $17, $18, $19, 8($4) # encoding: [0x84,0x20,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, 8($4) # encoding: [0x24,0x21,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: lwm32 $16, $17, $18, $19, $ra, 8($4) # encoding: [0x84,0x22,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x24,0x23,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x24,0x23,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: swm32 $16, $17, 8($4) # encoding: [0x44,0x20,0x08,0xd0]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EL: swm32 $16, $17, $18, $19, 8($4) # encoding: [0x84,0x20,0x08,0xd0]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EL: lwm16 $16, $17, $ra, 8($sp) # encoding: [0x12,0x45]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM16_MM
# CHECK-EL: swm16 $16, $17, $ra, 8($sp) # encoding: [0x52,0x45]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWM16_MM
# CHECK-EL: lwm16 $16, $17, $ra, 8($sp) # encoding: [0x12,0x45]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM16_MM
# CHECK-EL: lwm32 $16, $17, $ra, 64($sp) # encoding: [0x5d,0x22,0x40,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: lwm32 $16, $17, $ra, 8($4) # encoding: [0x44,0x22,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: lwm32 $16, $17, 8($sp) # encoding: [0x5d,0x20,0x08,0x50]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EL: swm16 $16, $17, $ra, 8($sp) # encoding: [0x52,0x45]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWM16_MM
# CHECK-EL: swm32 $16, $17, $ra, 64($sp) # encoding: [0x5d,0x22,0x40,0xd0]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EL: swm32 $16, $17, $ra, 8($4) # encoding: [0x44,0x22,0x08,0xd0]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EL: swm32 $16, $17, 8($sp) # encoding: [0x5d,0x20,0x08,0xd0]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EL: swp $16, 8($4) # encoding: [0x04,0x22,0x08,0x90]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} SWP_MM
# CHECK-EL: lwp $16, 8($4) # encoding: [0x04,0x22,0x08,0x10]
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} LWP_MM
#------------------------------------------------------------------------------
# Big endian
#------------------------------------------------------------------------------
# CHECK-EB: lb $5, 8($4) # encoding: [0x1c,0xa4,0x00,0x08]
# CHECK-EB: lbu $6, 8($4) # encoding: [0x14,0xc4,0x00,0x08]
# CHECK-EB: lh $2, 8($4) # encoding: [0x3c,0x44,0x00,0x08]
# CHECK-EB: lhu $4, 8($2) # encoding: [0x34,0x82,0x00,0x08]
# CHECK-EB: lw $6, 4($5) # encoding: [0xfc,0xc5,0x00,0x04]
# CHECK-EB: lw $6, 123($sp) # encoding: [0xfc,0xdd,0x00,0x7b]
# CHECK-EB: sb $5, 8($4) # encoding: [0x18,0xa4,0x00,0x08]
# CHECK-EB: sh $2, 8($4) # encoding: [0x38,0x44,0x00,0x08]
# CHECK-EB: sw $5, 4($6) # encoding: [0xf8,0xa6,0x00,0x04]
# CHECK-EB: sw $5, 123($sp) # encoding: [0xf8,0xbd,0x00,0x7b]
# CHECK-EB: sw $3, 32($gp) # encoding: [0xf8,0x7c,0x00,0x20]
# CHECK-EB: ll $2, 8($4) # encoding: [0x60,0x44,0x30,0x08]
# CHECK-EB: sc $2, 8($4) # encoding: [0x60,0x44,0xb0,0x08]
# CHECK-EB: lwu $2, 8($4) # encoding: [0x60,0x44,0xe0,0x08]
# CHECK-EB: lwxs $2, $3($4) # encoding: [0x00,0x64,0x11,0x18]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWXS_MM
# CHECK-EB: lwm32 $16, $17, 8($4) # encoding: [0x20,0x44,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: lwm32 $16, $17, $18, $19, 8($4) # encoding: [0x20,0x84,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, 8($4) # encoding: [0x21,0x24,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: lwm32 $16, $17, $18, $19, $ra, 8($4) # encoding: [0x22,0x84,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x23,0x24,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: lwm32 $16, $17, $18, $19, $20, $21, $22, $23, $fp, $ra, 8($4) # encoding: [0x23,0x24,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: swm32 $16, $17, 8($4) # encoding: [0x20,0x44,0xd0,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EB: swm32 $16, $17, $18, $19, 8($4) # encoding: [0x20,0x84,0xd0,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EB: lwm16 $16, $17, $ra, 8($sp) # encoding: [0x45,0x12]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM16_MM
# CHECK-EB: swm16 $16, $17, $ra, 8($sp) # encoding: [0x45,0x52]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWM16_MM
# CHECK-EB: lwm16 $16, $17, $ra, 8($sp) # encoding: [0x45,0x12]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM16_MM
# CHECK-EB: lwm32 $16, $17, $ra, 64($sp) # encoding: [0x22,0x5d,0x50,0x40]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: lwm32 $16, $17, $ra, 8($4) # encoding: [0x22,0x44,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: lwm32 $16, $17, 8($sp) # encoding: [0x20,0x5d,0x50,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWM32_MM
# CHECK-EB: swm16 $16, $17, $ra, 8($sp) # encoding: [0x45,0x52]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWM16_MM
# CHECK-EB: swm32 $16, $17, $ra, 64($sp) # encoding: [0x22,0x5d,0xd0,0x40]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EB: swm32 $16, $17, $ra, 8($4) # encoding: [0x22,0x44,0xd0,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EB: swm32 $16, $17, 8($sp) # encoding: [0x20,0x5d,0xd0,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWM32_MM
# CHECK-EB: swp $16, 8($4) # encoding: [0x22,0x04,0x90,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} SWP_MM
# CHECK-EB: lwp $16, 8($4) # encoding: [0x22,0x04,0x10,0x08]
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} LWP_MM
lb $5, 8($4)
lbu $6, 8($4)
lh $2, 8($4)
lhu $4, 8($2)
lw $6, 4($5)
lw $6, 123($sp)
sb $5, 8($4)
sh $2, 8($4)
sw $5, 4($6)
sw $5, 123($sp)
sw $3, 32($gp)
ll $2, 8($4)
sc $2, 8($4)
lwu $2, 8($4)
lwxs $2, $3($4)
lwm32 $16, $17, 8($4)
lwm32 $16 - $19, 8($4)
lwm32 $16-$23, $30, 8($4)
lwm32 $16-$19, $31, 8($4)
lwm32 $16-$23, $30, $31, 8($4)
lwm32 $16-$23, $30 - $31, 8($4)
swm32 $16, $17, 8($4)
swm32 $16 - $19, 8($4)
lwm16 $16, $17, $ra, 8($sp)
swm16 $16, $17, $ra, 8($sp)
lwm $16, $17, $ra, 8($sp)
lwm $16, $17, $ra, 64($sp)
lwm $16, $17, $ra, 8($4)
lwm $16, $17, 8($sp)
swm $16, $17, $ra, 8($sp)
swm $16, $17, $ra, 64($sp)
swm $16, $17, $ra, 8($4)
swm $16, $17, 8($sp)
swp $16, 8($4)
lwp $16, 8($4)
|