diff options
author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-07-25 09:11:15 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-07-25 09:11:15 +0000 |
commit | bf99364f819465536a6b230b95735b239e3fc7a5 (patch) | |
tree | 5839fbe196bb47163f76bda386eda7a3a012d940 /test | |
parent | cf20e45cc4cb77bcb16363531e600883cd27ff80 (diff) | |
download | external_llvm-bf99364f819465536a6b230b95735b239e3fc7a5.zip external_llvm-bf99364f819465536a6b230b95735b239e3fc7a5.tar.gz external_llvm-bf99364f819465536a6b230b95735b239e3fc7a5.tar.bz2 |
[SystemZ] Add LOCR and LOCGR
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187113 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/SystemZ/cond-move-01.ll | 25 | ||||
-rw-r--r-- | test/MC/Disassembler/SystemZ/insns.txt | 96 | ||||
-rw-r--r-- | test/MC/SystemZ/insn-bad-z196.s | 16 | ||||
-rw-r--r-- | test/MC/SystemZ/insn-good-z196.s | 72 |
4 files changed, 209 insertions, 0 deletions
diff --git a/test/CodeGen/SystemZ/cond-move-01.ll b/test/CodeGen/SystemZ/cond-move-01.ll new file mode 100644 index 0000000..3ddc820 --- /dev/null +++ b/test/CodeGen/SystemZ/cond-move-01.ll @@ -0,0 +1,25 @@ +; Test LOCR and LOCGR. +; +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 | FileCheck %s + +; Test LOCR. +define i32 @f1(i32 %a, i32 %b, i32 %limit) { +; CHECK-LABEL: f1: +; CHECK: clfi %r4, 42 +; CHECK: locrnl %r2, %r3 +; CHECK: br %r14 + %cond = icmp ult i32 %limit, 42 + %res = select i1 %cond, i32 %a, i32 %b + ret i32 %res +} + +; Test LOCGR. +define i64 @f2(i64 %a, i64 %b, i64 %limit) { +; CHECK-LABEL: f2: +; CHECK: clgfi %r4, 42 +; CHECK: locgrnl %r2, %r3 +; CHECK: br %r14 + %cond = icmp ult i64 %limit, 42 + %res = select i1 %cond, i64 %a, i64 %b + ret i64 %res +} diff --git a/test/MC/Disassembler/SystemZ/insns.txt b/test/MC/Disassembler/SystemZ/insns.txt index 23f45a6..cf26b65 100644 --- a/test/MC/Disassembler/SystemZ/insns.txt +++ b/test/MC/Disassembler/SystemZ/insns.txt @@ -3358,6 +3358,102 @@ # CHECK: locg %r7, 6399(%r8), 15 0xeb 0x7f 0x88 0xff 0x01 0xe2 +# CHECK: locr %r11, %r3, 0 +0xb9 0xf2 0x00 0xb3 + +# CHECK: locro %r11, %r3 +0xb9 0xf2 0x10 0xb3 + +# CHECK: locrh %r11, %r3 +0xb9 0xf2 0x20 0xb3 + +# CHECK: locrnle %r11, %r3 +0xb9 0xf2 0x30 0xb3 + +# CHECK: locrl %r11, %r3 +0xb9 0xf2 0x40 0xb3 + +# CHECK: locrnhe %r11, %r3 +0xb9 0xf2 0x50 0xb3 + +# CHECK: locrlh %r11, %r3 +0xb9 0xf2 0x60 0xb3 + +# CHECK: locrne %r11, %r3 +0xb9 0xf2 0x70 0xb3 + +# CHECK: locre %r11, %r3 +0xb9 0xf2 0x80 0xb3 + +# CHECK: locrnlh %r11, %r3 +0xb9 0xf2 0x90 0xb3 + +# CHECK: locrhe %r11, %r3 +0xb9 0xf2 0xa0 0xb3 + +# CHECK: locrnl %r11, %r3 +0xb9 0xf2 0xb0 0xb3 + +# CHECK: locrle %r11, %r3 +0xb9 0xf2 0xc0 0xb3 + +# CHECK: locrnh %r11, %r3 +0xb9 0xf2 0xd0 0xb3 + +# CHECK: locrno %r11, %r3 +0xb9 0xf2 0xe0 0xb3 + +# CHECK: locr %r11, %r3, 15 +0xb9 0xf2 0xf0 0xb3 + +# CHECK: locgr %r11, %r3, 0 +0xb9 0xe2 0x00 0xb3 + +# CHECK: locgro %r11, %r3 +0xb9 0xe2 0x10 0xb3 + +# CHECK: locgrh %r11, %r3 +0xb9 0xe2 0x20 0xb3 + +# CHECK: locgrnle %r11, %r3 +0xb9 0xe2 0x30 0xb3 + +# CHECK: locgrl %r11, %r3 +0xb9 0xe2 0x40 0xb3 + +# CHECK: locgrnhe %r11, %r3 +0xb9 0xe2 0x50 0xb3 + +# CHECK: locgrlh %r11, %r3 +0xb9 0xe2 0x60 0xb3 + +# CHECK: locgrne %r11, %r3 +0xb9 0xe2 0x70 0xb3 + +# CHECK: locgre %r11, %r3 +0xb9 0xe2 0x80 0xb3 + +# CHECK: locgrnlh %r11, %r3 +0xb9 0xe2 0x90 0xb3 + +# CHECK: locgrhe %r11, %r3 +0xb9 0xe2 0xa0 0xb3 + +# CHECK: locgrnl %r11, %r3 +0xb9 0xe2 0xb0 0xb3 + +# CHECK: locgrle %r11, %r3 +0xb9 0xe2 0xc0 0xb3 + +# CHECK: locgrnh %r11, %r3 +0xb9 0xe2 0xd0 0xb3 + +# CHECK: locgrno %r11, %r3 +0xb9 0xe2 0xe0 0xb3 + +# CHECK: locgr %r11, %r3, 15 +0xb9 0xe2 0xf0 0xb3 + # CHECK: lpdbr %f0, %f9 0xb3 0x10 0x00 0x09 diff --git a/test/MC/SystemZ/insn-bad-z196.s b/test/MC/SystemZ/insn-bad-z196.s index 5243eb5..a5e2189 100644 --- a/test/MC/SystemZ/insn-bad-z196.s +++ b/test/MC/SystemZ/insn-bad-z196.s @@ -59,6 +59,22 @@ locg %r0,0(%r1,%r2),1 #CHECK: error: invalid operand +#CHECK: locgr %r0,%r0,-1 +#CHECK: error: invalid operand +#CHECK: locgr %r0,%r0,16 + + locgr %r0,%r0,-1 + locgr %r0,%r0,16 + +#CHECK: error: invalid operand +#CHECK: locr %r0,%r0,-1 +#CHECK: error: invalid operand +#CHECK: locr %r0,%r0,16 + + locr %r0,%r0,-1 + locr %r0,%r0,16 + +#CHECK: error: invalid operand #CHECK: sllk %r0,%r0,-524289 #CHECK: error: invalid operand #CHECK: sllk %r0,%r0,524288 diff --git a/test/MC/SystemZ/insn-good-z196.s b/test/MC/SystemZ/insn-good-z196.s index 5b452b5..f5213b9 100644 --- a/test/MC/SystemZ/insn-good-z196.s +++ b/test/MC/SystemZ/insn-good-z196.s @@ -217,6 +217,78 @@ locgnh %r1,2(%r3) locgno %r1,2(%r3) +#CHECK: locgr %r1, %r2, 0 # encoding: [0xb9,0xe2,0x00,0x12] +#CHECK: locgr %r1, %r2, 15 # encoding: [0xb9,0xe2,0xf0,0x12] + + locgr %r1,%r2,0 + locgr %r1,%r2,15 + +#CHECK: locgro %r1, %r3 # encoding: [0xb9,0xe2,0x10,0x13] +#CHECK: locgrh %r1, %r3 # encoding: [0xb9,0xe2,0x20,0x13] +#CHECK: locgrnle %r1, %r3 # encoding: [0xb9,0xe2,0x30,0x13] +#CHECK: locgrl %r1, %r3 # encoding: [0xb9,0xe2,0x40,0x13] +#CHECK: locgrnhe %r1, %r3 # encoding: [0xb9,0xe2,0x50,0x13] +#CHECK: locgrlh %r1, %r3 # encoding: [0xb9,0xe2,0x60,0x13] +#CHECK: locgrne %r1, %r3 # encoding: [0xb9,0xe2,0x70,0x13] +#CHECK: locgre %r1, %r3 # encoding: [0xb9,0xe2,0x80,0x13] +#CHECK: locgrnlh %r1, %r3 # encoding: [0xb9,0xe2,0x90,0x13] +#CHECK: locgrhe %r1, %r3 # encoding: [0xb9,0xe2,0xa0,0x13] +#CHECK: locgrnl %r1, %r3 # encoding: [0xb9,0xe2,0xb0,0x13] +#CHECK: locgrle %r1, %r3 # encoding: [0xb9,0xe2,0xc0,0x13] +#CHECK: locgrnh %r1, %r3 # encoding: [0xb9,0xe2,0xd0,0x13] +#CHECK: locgrno %r1, %r3 # encoding: [0xb9,0xe2,0xe0,0x13] + + locgro %r1,%r3 + locgrh %r1,%r3 + locgrnle %r1,%r3 + locgrl %r1,%r3 + locgrnhe %r1,%r3 + locgrlh %r1,%r3 + locgrne %r1,%r3 + locgre %r1,%r3 + locgrnlh %r1,%r3 + locgrhe %r1,%r3 + locgrnl %r1,%r3 + locgrle %r1,%r3 + locgrnh %r1,%r3 + locgrno %r1,%r3 + +#CHECK: locr %r1, %r2, 0 # encoding: [0xb9,0xf2,0x00,0x12] +#CHECK: locr %r1, %r2, 15 # encoding: [0xb9,0xf2,0xf0,0x12] + + locr %r1,%r2,0 + locr %r1,%r2,15 + +#CHECK: locro %r1, %r3 # encoding: [0xb9,0xf2,0x10,0x13] +#CHECK: locrh %r1, %r3 # encoding: [0xb9,0xf2,0x20,0x13] +#CHECK: locrnle %r1, %r3 # encoding: [0xb9,0xf2,0x30,0x13] +#CHECK: locrl %r1, %r3 # encoding: [0xb9,0xf2,0x40,0x13] +#CHECK: locrnhe %r1, %r3 # encoding: [0xb9,0xf2,0x50,0x13] +#CHECK: locrlh %r1, %r3 # encoding: [0xb9,0xf2,0x60,0x13] +#CHECK: locrne %r1, %r3 # encoding: [0xb9,0xf2,0x70,0x13] +#CHECK: locre %r1, %r3 # encoding: [0xb9,0xf2,0x80,0x13] +#CHECK: locrnlh %r1, %r3 # encoding: [0xb9,0xf2,0x90,0x13] +#CHECK: locrhe %r1, %r3 # encoding: [0xb9,0xf2,0xa0,0x13] +#CHECK: locrnl %r1, %r3 # encoding: [0xb9,0xf2,0xb0,0x13] +#CHECK: locrle %r1, %r3 # encoding: [0xb9,0xf2,0xc0,0x13] +#CHECK: locrnh %r1, %r3 # encoding: [0xb9,0xf2,0xd0,0x13] +#CHECK: locrno %r1, %r3 # encoding: [0xb9,0xf2,0xe0,0x13] + + locro %r1,%r3 + locrh %r1,%r3 + locrnle %r1,%r3 + locrl %r1,%r3 + locrnhe %r1,%r3 + locrlh %r1,%r3 + locrne %r1,%r3 + locre %r1,%r3 + locrnlh %r1,%r3 + locrhe %r1,%r3 + locrnl %r1,%r3 + locrle %r1,%r3 + locrnh %r1,%r3 + locrno %r1,%r3 + #CHECK: ngrk %r0, %r0, %r0 # encoding: [0xb9,0xe4,0x00,0x00] #CHECK: ngrk %r0, %r0, %r15 # encoding: [0xb9,0xe4,0xf0,0x00] #CHECK: ngrk %r0, %r15, %r0 # encoding: [0xb9,0xe4,0x00,0x0f] |