mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
cc12b285b6
This will currently accept the old number of bytes syntax, and convert it to a scalar. This should be removed in the near future (I think I converted all of the tests already, but likely missed a few). Not sure what the exact syntax and policy should be. We can continue printing the number of bytes for non-generic instructions to avoid test churn and only allow non-scalar types for generic instructions. This will currently print the LLT in parentheses, but accept parsing the existing integers and implicitly converting to scalar. The parentheses are a bit ugly, but the parser logic seems unable to deal without either parentheses or some keyword to indicate the start of a type.
100 lines
2.3 KiB
YAML
100 lines
2.3 KiB
YAML
# RUN: llc -run-pass=aarch64-ldst-opt -o - -mtriple=aarch64-- %s | FileCheck %s
|
|
# Check that we merge the MIFlags from both the instructions in the final
|
|
# instruction.
|
|
---
|
|
name: case11
|
|
# CHECK-LABEL: name: case11
|
|
body: |
|
|
bb.0:
|
|
frame-setup STRWui $w1, $x0, 1 :: (store (s32))
|
|
$w1 = frame-destroy LDRWui $x0, 1 :: (load (s32))
|
|
|
|
; CHECK: frame-setup STRWui
|
|
; CHECK-NOT: frame-setup
|
|
; CHECK-NEXT: frame-destroy ORRWrs
|
|
; No merging happening here, make sure we keep the flags of the previous
|
|
; instruction.
|
|
RET_ReallyLR
|
|
|
|
...
|
|
---
|
|
name: case12
|
|
# CHECK-LABEL: name: case12
|
|
body: |
|
|
bb.0:
|
|
frame-setup STRWui $w1, $x0, 1 :: (store (s32))
|
|
$w2 = frame-destroy LDRHHui $x0, 2 :: (load (s16))
|
|
|
|
; CHECK: frame-setup STRWui
|
|
; CHECK-NOT: frame-setup
|
|
; CHECK-NEXT: frame-destroy ANDWri
|
|
; No merging happening here, make sure we keep the flags of the previous
|
|
; instruction.
|
|
RET_ReallyLR
|
|
|
|
...
|
|
---
|
|
name: case13
|
|
# CHECK-LABEL: name: case13
|
|
body: |
|
|
bb.0:
|
|
frame-setup STRWui $w1, $x0, 1 :: (store (s32))
|
|
$w2 = frame-destroy LDRHHui $x0, 3 :: (load (s16))
|
|
|
|
; CHECK: frame-setup STRWui
|
|
; CHECK-NOT: frame-setup
|
|
; CHECK-NEXT: frame-destroy UBFMWri
|
|
; No merging happening here, make sure we keep the flags of the previous
|
|
; instruction.
|
|
RET_ReallyLR
|
|
|
|
...
|
|
---
|
|
name: case2
|
|
# CHECK-LABEL: name: case2
|
|
body: |
|
|
bb.0:
|
|
frame-setup STRHHui $wzr, $x0, 0 :: (store (s32))
|
|
frame-destroy STRHHui $wzr, $x0, 1 :: (store (s32))
|
|
|
|
; CHECK: frame-setup frame-destroy STRWui
|
|
RET_ReallyLR
|
|
|
|
...
|
|
---
|
|
name: case3
|
|
# CHECK-LABEL: name: case3
|
|
body: |
|
|
bb.0:
|
|
|
|
$x0 = frame-setup LDRXui $x2, 0 :: (load (s64))
|
|
$x1 = frame-destroy LDRXui $x2, 1 :: (load (s64))
|
|
|
|
; CHECK: frame-setup frame-destroy LDPXi
|
|
RET_ReallyLR
|
|
...
|
|
---
|
|
name: case4
|
|
# CHECK-LABEL: name: case4
|
|
body: |
|
|
bb.0:
|
|
$x26, $x25 = frame-setup LDPXi $sp, 0
|
|
$sp = frame-destroy ADDXri $sp, 64, 0
|
|
|
|
; CHECK: = frame-setup frame-destroy LDPXpost
|
|
RET_ReallyLR
|
|
|
|
...
|
|
---
|
|
name: case41
|
|
# CHECK-LABEL: name: case41
|
|
body: |
|
|
bb.0:
|
|
$x26 = frame-setup LDRXui $sp, 0
|
|
$sp = frame-destroy ADDXri $sp, 64, 0
|
|
|
|
; CHECK: = frame-setup frame-destroy LDRXpost
|
|
RET_ReallyLR
|
|
|
|
...
|