| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 |
| # RUN: llc -mtriple=aarch64-linux-gnu -verify-machineinstrs -run-pass=aarch64-ldst-opt %s -o - | FileCheck %s |
| |
| |
| --- |
| name: merge_unscaled_str_with_unscaled_str_8 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: merge_unscaled_str_with_unscaled_str_8 |
| ; CHECK: STURHHi $wzr, $x0, 4 :: (store (s8)) |
| ; CHECK-NEXT: RET undef $lr |
| STURBBi $wzr, $x0, 4 :: (store (s8)) |
| STURBBi $wzr, $x0, 5 :: (store (s8)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_scaled_str_8 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_scaled_str_8 |
| ; CHECK: STRHHui $wzr, $x0, 2 :: (store (s8)) |
| ; CHECK-NEXT: RET undef $lr |
| STRBBui $wzr, $x0, 4 :: (store (s8)) |
| STRBBui $wzr, $x0, 5 :: (store (s8)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_unscaled_8 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_unscaled_8 |
| ; CHECK: STRBBui $wzr, $x0, 4 :: (store (s8)) |
| ; CHECK-NEXT: STURBBi $wzr, $x0, 5 :: (store (s8)) |
| ; CHECK-NEXT: RET undef $lr |
| STRBBui $wzr, $x0, 4 :: (store (s8)) |
| STURBBi $wzr, $x0, 5 :: (store (s8)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_unscaled_str_with_scaled_8 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_unscaled_str_with_scaled_8 |
| ; CHECK: STURBBi $wzr, $x0, 4 :: (store (s8)) |
| ; CHECK-NEXT: STRBBui $wzr, $x0, 5 :: (store (s8)) |
| ; CHECK-NEXT: RET undef $lr |
| STURBBi $wzr, $x0, 4 :: (store (s8)) |
| STRBBui $wzr, $x0, 5 :: (store (s8)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_unscaled_str_with_unscaled_str_16 |
| body: | |
| bb.0: |
| ; CHECK-LABEL: name: merge_unscaled_str_with_unscaled_str_16 |
| ; CHECK: STURWi $wzr, $x0, 4 :: (store (s16)) |
| ; CHECK-NEXT: RET undef $lr |
| STURHHi $wzr, $x0, 4 :: (store (s16)) |
| STURHHi $wzr, $x0, 6 :: (store (s16)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_scaled_str_16 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_scaled_str_16 |
| ; CHECK: STRWui $wzr, $x0, 2 :: (store (s16)) |
| ; CHECK-NEXT: RET undef $lr |
| STRHHui $wzr, $x0, 4 :: (store (s16)) |
| STRHHui $wzr, $x0, 5 :: (store (s16)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_unscaled_16 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_unscaled_16 |
| ; CHECK: STRHHui $wzr, $x0, 2 :: (store (s16)) |
| ; CHECK-NEXT: STURHHi $wzr, $x0, 6 :: (store (s16)) |
| ; CHECK-NEXT: RET undef $lr |
| STRHHui $wzr, $x0, 2 :: (store (s16)) |
| STURHHi $wzr, $x0, 6 :: (store (s16)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_unscaled_str_with_scaled_16 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_unscaled_str_with_scaled_16 |
| ; CHECK: STURHHi $wzr, $x0, 4 :: (store (s16)) |
| ; CHECK-NEXT: STRHHui $wzr, $x0, 3 :: (store (s16)) |
| ; CHECK-NEXT: RET undef $lr |
| STURHHi $wzr, $x0, 4 :: (store (s16)) |
| STRHHui $wzr, $x0, 3 :: (store (s16)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_unscaled_str_with_unscaled_32 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_unscaled_str_with_unscaled_32 |
| ; CHECK: STURXi $xzr, $x0, 4 :: (store (s32)) |
| ; CHECK-NEXT: RET undef $lr |
| STURWi $wzr, $x0, 4 :: (store (s32)) |
| STURWi $wzr, $x0, 8 :: (store (s32)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_scaled_32 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_scaled_32 |
| ; CHECK: STRXui $xzr, $x0, 1 :: (store (s32)) |
| ; CHECK-NEXT: RET undef $lr |
| STRWui $wzr, $x0, 2 :: (store (s32)) |
| STRWui $wzr, $x0, 3 :: (store (s32)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_unscaled_32 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_unscaled_32 |
| ; CHECK: STRXui $xzr, $x0, 1 :: (store (s32)) |
| ; CHECK-NEXT: RET undef $lr |
| STRWui $wzr, $x0, 2 :: (store (s32)) |
| STURWi $wzr, $x0, 12 :: (store (s32)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_unscaled_str_with_scaled_32 |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_unscaled_str_with_scaled_32 |
| ; CHECK: STURXi $xzr, $x0, 8 :: (store (s32)) |
| ; CHECK-NEXT: RET undef $lr |
| STURWi $wzr, $x0, 8 :: (store (s32)) |
| STRWui $wzr, $x0, 3 :: (store (s32)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_unscaled_32_lower_address_second |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_unscaled_32_lower_address_second |
| ; CHECK: STRXui $xzr, $x0, 1 :: (store (s32)) |
| ; CHECK-NEXT: RET undef $lr |
| STRWui $wzr, $x0, 3 :: (store (s32)) |
| STURWi $wzr, $x0, 8 :: (store (s32)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_unscaled_str_with_scaled_32_lower_address_second |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_unscaled_str_with_scaled_32_lower_address_second |
| ; CHECK: STURXi $xzr, $x0, 4 :: (store (s32)) |
| ; CHECK-NEXT: RET undef $lr |
| STURWi $wzr, $x0, 8 :: (store (s32)) |
| STRWui $wzr, $x0, 1 :: (store (s32)) |
| RET undef $lr |
| ... |
| --- |
| name: merge_scaled_str_with_unscaled_32_negative_address |
| body: | |
| bb.0.entry: |
| ; CHECK-LABEL: name: merge_scaled_str_with_unscaled_32_negative_address |
| ; CHECK: STPWi $wzr, $wzr, $x0, -1 :: (store (s32)) |
| ; CHECK-NEXT: RET undef $lr |
| STRWui $wzr, $x0, 0 :: (store (s32)) |
| STURWi $wzr, $x0, -4 :: (store (s32)) |
| RET undef $lr |