define i8* @ldrwu32_508(i8* %x, i8* %y) {
; CHECK-LABEL: ldrwu32_508:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #508
-; CHECK-NEXT: vldrw.u32 q0, [r2]
+; CHECK-NEXT: vldrw.u32 q0, [r0, #508]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrwu32_m508(i8* %x, i8* %y) {
; CHECK-LABEL: ldrwu32_m508:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #508
-; CHECK-NEXT: vldrw.u32 q0, [r2]
+; CHECK-NEXT: vldrw.u32 q0, [r0, #-508]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrhu32_254(i8* %x, i8* %y) {
; CHECK-LABEL: ldrhu32_254:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #254
-; CHECK-NEXT: vldrh.u32 q0, [r2]
+; CHECK-NEXT: vldrh.u32 q0, [r0, #254]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrhu32_m254(i8* %x, i8* %y) {
; CHECK-LABEL: ldrhu32_m254:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #254
-; CHECK-NEXT: vldrh.u32 q0, [r2]
+; CHECK-NEXT: vldrh.u32 q0, [r0, #-254]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrhs32_254(i8* %x, i8* %y) {
; CHECK-LABEL: ldrhs32_254:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #254
-; CHECK-NEXT: vldrh.s32 q0, [r2]
+; CHECK-NEXT: vldrh.s32 q0, [r0, #254]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrhs32_m254(i8* %x, i8* %y) {
; CHECK-LABEL: ldrhs32_m254:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #254
-; CHECK-NEXT: vldrh.s32 q0, [r2]
+; CHECK-NEXT: vldrh.s32 q0, [r0, #-254]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrhu16_254(i8* %x, i8* %y) {
; CHECK-LABEL: ldrhu16_254:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #254
-; CHECK-NEXT: vldrh.u16 q0, [r2]
+; CHECK-NEXT: vldrh.u16 q0, [r0, #254]
; CHECK-NEXT: vstrh.16 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrhu16_m254(i8* %x, i8* %y) {
; CHECK-LABEL: ldrhu16_m254:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #254
-; CHECK-NEXT: vldrh.u16 q0, [r2]
+; CHECK-NEXT: vldrh.u16 q0, [r0, #-254]
; CHECK-NEXT: vstrh.16 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbu32_127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbu32_127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #127
-; CHECK-NEXT: vldrb.u32 q0, [r2]
+; CHECK-NEXT: vldrb.u32 q0, [r0, #127]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbu32_m127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbu32_m127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #127
-; CHECK-NEXT: vldrb.u32 q0, [r2]
+; CHECK-NEXT: vldrb.u32 q0, [r0, #-127]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbs32_127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbs32_127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #127
-; CHECK-NEXT: vldrb.s32 q0, [r2]
+; CHECK-NEXT: vldrb.s32 q0, [r0, #127]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbs32_m127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbs32_m127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #127
-; CHECK-NEXT: vldrb.s32 q0, [r2]
+; CHECK-NEXT: vldrb.s32 q0, [r0, #-127]
; CHECK-NEXT: vstrw.32 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbu16_127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbu16_127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #127
-; CHECK-NEXT: vldrb.u16 q0, [r2]
+; CHECK-NEXT: vldrb.u16 q0, [r0, #127]
; CHECK-NEXT: vstrh.16 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbu16_m127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbu16_m127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #127
-; CHECK-NEXT: vldrb.u16 q0, [r2]
+; CHECK-NEXT: vldrb.u16 q0, [r0, #-127]
; CHECK-NEXT: vstrh.16 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbs16_127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbs16_127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #127
-; CHECK-NEXT: vldrb.s16 q0, [r2]
+; CHECK-NEXT: vldrb.s16 q0, [r0, #127]
; CHECK-NEXT: vstrh.16 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbs16_m127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbs16_m127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #127
-; CHECK-NEXT: vldrb.s16 q0, [r2]
+; CHECK-NEXT: vldrb.s16 q0, [r0, #-127]
; CHECK-NEXT: vstrh.16 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbu8_127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbu8_127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: add.w r2, r0, #127
-; CHECK-NEXT: vldrb.u8 q0, [r2]
+; CHECK-NEXT: vldrb.u8 q0, [r0, #127]
; CHECK-NEXT: vstrb.8 q0, [r1]
; CHECK-NEXT: bx lr
entry:
define i8* @ldrbu8_m127(i8* %x, i8* %y) {
; CHECK-LABEL: ldrbu8_m127:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: sub.w r2, r0, #127
-; CHECK-NEXT: vldrb.u8 q0, [r2]
+; CHECK-NEXT: vldrb.u8 q0, [r0, #-127]
; CHECK-NEXT: vstrb.8 q0, [r1]
; CHECK-NEXT: bx lr
entry:
; CHECK-LABEL: strw32_508:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrw.u32 q0, [r1]
-; CHECK-NEXT: add.w r1, r0, #508
-; CHECK-NEXT: vstrw.32 q0, [r1]
+; CHECK-NEXT: vstrw.32 q0, [r0, #508]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 508
; CHECK-LABEL: strw32_m508:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrw.u32 q0, [r1]
-; CHECK-NEXT: sub.w r1, r0, #508
-; CHECK-NEXT: vstrw.32 q0, [r1]
+; CHECK-NEXT: vstrw.32 q0, [r0, #-508]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 -508
; CHECK-LABEL: strh32_254:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrh.u32 q0, [r1]
-; CHECK-NEXT: add.w r1, r0, #254
-; CHECK-NEXT: vstrh.32 q0, [r1]
+; CHECK-NEXT: vstrh.32 q0, [r0, #254]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 254
; CHECK-LABEL: strh32_m254:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrh.u32 q0, [r1]
-; CHECK-NEXT: sub.w r1, r0, #254
-; CHECK-NEXT: vstrh.32 q0, [r1]
+; CHECK-NEXT: vstrh.32 q0, [r0, #-254]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 -254
; CHECK-LABEL: strh16_254:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrh.u16 q0, [r1]
-; CHECK-NEXT: add.w r1, r0, #254
-; CHECK-NEXT: vstrh.16 q0, [r1]
+; CHECK-NEXT: vstrh.16 q0, [r0, #254]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 254
; CHECK-LABEL: strh16_m254:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrh.u16 q0, [r1]
-; CHECK-NEXT: sub.w r1, r0, #254
-; CHECK-NEXT: vstrh.16 q0, [r1]
+; CHECK-NEXT: vstrh.16 q0, [r0, #-254]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 -254
; CHECK-LABEL: strb32_127:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrb.u32 q0, [r1]
-; CHECK-NEXT: add.w r1, r0, #127
-; CHECK-NEXT: vstrb.32 q0, [r1]
+; CHECK-NEXT: vstrb.32 q0, [r0, #127]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 127
; CHECK-LABEL: strb32_m127:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrb.u32 q0, [r1]
-; CHECK-NEXT: sub.w r1, r0, #127
-; CHECK-NEXT: vstrb.32 q0, [r1]
+; CHECK-NEXT: vstrb.32 q0, [r0, #-127]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 -127
; CHECK-LABEL: strb16_127:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrb.u16 q0, [r1]
-; CHECK-NEXT: add.w r1, r0, #127
-; CHECK-NEXT: vstrb.16 q0, [r1]
+; CHECK-NEXT: vstrb.16 q0, [r0, #127]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 127
; CHECK-LABEL: strb16_m127:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrb.u16 q0, [r1]
-; CHECK-NEXT: sub.w r1, r0, #127
-; CHECK-NEXT: vstrb.16 q0, [r1]
+; CHECK-NEXT: vstrb.16 q0, [r0, #-127]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 -127
; CHECK-LABEL: strb8_127:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrb.u8 q0, [r1]
-; CHECK-NEXT: add.w r1, r0, #127
-; CHECK-NEXT: vstrb.8 q0, [r1]
+; CHECK-NEXT: vstrb.8 q0, [r0, #127]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 127
; CHECK-LABEL: strb8_m127:
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vldrb.u8 q0, [r1]
-; CHECK-NEXT: sub.w r1, r0, #127
-; CHECK-NEXT: vstrb.8 q0, [r1]
+; CHECK-NEXT: vstrb.8 q0, [r0, #-127]
; CHECK-NEXT: bx lr
entry:
%z = getelementptr inbounds i8, i8* %y, i32 -127