From: Jacques Pienaar Date: Mon, 11 Jul 2016 17:58:16 +0000 (+0000) Subject: [lanai] Add more tests for assembly of conditional ALU ops X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9ba010ec8454e20102a92cdeb3e0babe83c833b0;p=llvm [lanai] Add more tests for assembly of conditional ALU ops git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275081 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/MC/Lanai/conditional_inst.s b/test/MC/Lanai/conditional_inst.s new file mode 100644 index 00000000000..58d9b634e4b --- /dev/null +++ b/test/MC/Lanai/conditional_inst.s @@ -0,0 +1,77 @@ +! RUN: llvm-mc -arch=lanai -show-encoding -show-inst < %s | FileCheck %s + +.text + .align 4 + .global jump1 + + bt %r5 +! CHECK: encoding: [0xc1,0x00,0x2d,0x00] +! CHECK-NEXT: > + +! BR classes + bt 0x1234 +! CHECK: encoding: [0xe0,0x00,0x12,0x34] +! CHECK-NEXT: + +jump1: + blt 2000 +! CHECK: encoding: [0xec,0x00,0x07,0xd1] +! CHECK-NEXT: +! CHECK-NEXT: + +jump2: + blt jump1 +! CHECK: encoding: [0b1110110A,A,A,0x01'A'] +! CHECK-NEXT: fixup A - offset: 0, value: jump1, kind: FIXUP_LANAI_25 +! CHECK-NEXT: +! CHECK-NEXT: + + bpl jump2 +! CHECK: encoding: [0b1110101A,A,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: jump2, kind: FIXUP_LANAI_25 +! CHECK-NEXT: +! CHECK-NEXT: + + bt . +! CHECK: .Ltmp{{[0-9]+}} +! CHECK-NEXT: bt .Ltmp{{[0-9]+}} +! CHECK: encoding: [0b1110000A,A,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: .Ltmp0, kind: FIXUP_LANAI_25 +! CHECK-NEXT: + +! SCC + spl %r19 +! CHECK: encoding: [0xea,0x4c,0x00,0x02] +! CHECK-NEXT: +! CHECK-NEXT: + +! BRR + bf.r 0x456 +! CHECK: encoding: [0xe1,0x00,0x04,0x57] +! CHECK-NEXT: +! CHECK-NEXT: + +! Conditional ALU + add.ge %r13, %r14, %r18 +! CHECK: encoding: [0xc9,0x34,0x70,0x06] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: > + + add.f %r13, %r14, %r18 +! CHECK: encoding: [0xc9,0x36,0x70,0x00] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: > diff --git a/test/MC/Lanai/ctrl-instructions.s b/test/MC/Lanai/ctrl-instructions.s index 05e7a958227..2e5b2f263f4 100644 --- a/test/MC/Lanai/ctrl-instructions.s +++ b/test/MC/Lanai/ctrl-instructions.s @@ -1,13 +1,13 @@ -// RUN: llvm-mc -triple lanai-unknown-unknown -show-encoding -o - %s | FileCheck %s +! RUN: llvm-mc -triple lanai-unknown-unknown -show-encoding -o - < %s | FileCheck %s -// CHECK: bt .Ltmp0 ! encoding: [0b1110000A,A,A,A] -// CHECK-NEXT: ! fixup A - offset: 0, value: .Ltmp0, kind: FIXUP_LANAI_25 +! CHECK: bt .Ltmp0 ! encoding: [0b1110000A,A,A,A] +! CHECK-NEXT: ! fixup A - offset: 0, value: .Ltmp0, kind: FIXUP_LANAI_25 bt 1f nop 1: -// CHECK: bt foo ! encoding: [0b1110000A,A,A,A] -// CHECK-NEXT: ! fixup A - offset: 0, value: foo, kind: FIXUP_LANAI_25 +! CHECK: bt foo ! encoding: [0b1110000A,A,A,A] +! CHECK-NEXT: ! fixup A - offset: 0, value: foo, kind: FIXUP_LANAI_25 bt foo nop diff --git a/test/MC/Lanai/memory.s b/test/MC/Lanai/memory.s new file mode 100644 index 00000000000..d34f917c740 --- /dev/null +++ b/test/MC/Lanai/memory.s @@ -0,0 +1,247 @@ +! RUN: llvm-mc -arch=lanai -show-encoding -show-inst < %s | FileCheck %s + +! Checking the machine instructions generated from ASM instructions for ALU +! operations. + +! RM class + ld [%r7], %r6 +! CHECK: encoding: [0x83,0x1c,0x00,0x00] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld [%r6], %r6 +! CHECK: encoding: [0x83,0x18,0x00,0x00] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + st %r6, [%r7] +! CHECK: encoding: [0x93,0x1c,0x00,0x00] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld 0x123[%r7*], %r6 +! CHECK: encoding: [0x83,0x1d,0x01,0x23] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld [%r7--], %r6 +! CHECK: encoding: [0x83,0x1d,0xff,0xfc] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld 0x123[%r7], %r6 +! CHECK: encoding: [0x83,0x1e,0x01,0x23] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld 0x123[*%r7], %r6 +! CHECK: encoding: [0x83,0x1f,0x01,0x23] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld [--%r7], %r6 +! CHECK: encoding: [0x83,0x1f,0xff,0xfc] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + st %r6, [%r7++] +! CHECK: encoding: [0x93,0x1d,0x00,0x04] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + st.h %r6, [%r7++] +! CHECK: encoding: [0xf3,0x1f,0x24,0x02] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: > + + ld.b [--%r7], %r6 +! CHECK: encoding: [0xf3,0x1f,0x4f,0xff] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: > + +! Largest RM value before SLS encoding is used + ld [0x7fff], %r7 +! CHECK: encoding: [0x83,0x82,0x7f,0xff] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld [0x8000], %r7 +! CHECK: encoding: [0xf3,0x80,0x80,0x00] +! CHECK-NEXT: +! CHECK-NEXT: + +! Negative RM value + ld [0xfffffe8c], %pc +! CHECK: encoding: [0x81,0x02,0xfe,0x8c] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld [-372], %pc +! CHECK: encoding: [0x81,0x02,0xfe,0x8c] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + +! RRM class + ld %r9[%r12*], %r20 +! CHECK: encoding: [0xaa,0x31,0x48,0x02] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld %r9[%r12], %r20 +! CHECK: encoding: [0xaa,0x32,0x48,0x02] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld [%r12 sub %r9], %r20 +! CHECK: encoding: [0xaa,0x32,0x4a,0x02] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld %r9[*%r12], %r20 +! CHECK: encoding: [0xaa,0x33,0x48,0x02] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + st %r20, %r9[*%r12] +! CHECK: encoding: [0xba,0x33,0x48,0x02] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + ld.b [%r12 sub %r9], %r20 +! CHECK: encoding: [0xaa,0x32,0x4a,0x04] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + uld.h [%r12 sub %r9], %r20 +! CHECK: encoding: [0xaa,0x32,0x4a,0x01] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + +! SPLS class + st.b %r3, [%r6] +! CHECK: encoding: [0xf1,0x9b,0x60,0x00] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + st.b %r3, 1[%r6*] +! CHECK: encoding: [0xf1,0x9b,0x64,0x01] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + st.b %r3, 1[%r6] +! CHECK: encoding: [0xf1,0x9b,0x68,0x01] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + st.b %r3, 1[*%r6] +! CHECK: encoding: [0xf1,0x9b,0x6c,0x01] +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + +! SLS class + st %r30, [0x1234] +! CHECK: encoding: [0xff,0x01,0x12,0x34] +! CHECK-NEXT: +! CHECK-NEXT: + + ld [0xfe8c], %pc +! CHECK: encoding: [0xf1,0x00,0xfe,0x8c] +! CHECK-NEXT: +! CHECK-NEXT: + +! SLI class + mov hi(x), %r4 +! CHECK: encoding: [0x02,0x01,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: hi(x), kind: FIXUP_LANAI_HI16{{$}} +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + + mov hi(l+4), %r7 +! CHECK: encoding: [0x03,0x81,A,A] +! CHECK-NEXT: fixup A - offset: 0, value: (hi(l))+4, kind: FIXUP_LANAI_HI16{{$}} +! CHECK-NEXT: +! CHECK-NEXT: +! CHECK-NEXT: + diff --git a/test/MC/Lanai/v11.s b/test/MC/Lanai/v11.s index 8991dcb7b64..621c47de023 100644 --- a/test/MC/Lanai/v11.s +++ b/test/MC/Lanai/v11.s @@ -840,3 +840,37 @@ spl %r19 ! CHECK: 0xea,0x4c,0x00,0x02 bt 0x1234 ! CHECK: 0xe0,0x00,0x12,0x34 +sel.t %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x00 +sel.f %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x00 +sel.ugt %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x01 +sel.ule %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x01 +sel.ult %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x02 +sel.uge %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x02 +sel.ne %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x03 +sel.eq %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x03 +sel.vc %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x04 +sel.vs %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x04 +sel.pl %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x05 +sel.mi %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x05 +sel.ge %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x06 +sel.lt %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x06 +sel.gt %r9, %r15, %r12 +! CHECK: 0xc6,0x24,0x7f,0x07 +sel.le %r9, %r15, %r12 +! CHECK: 0xc6,0x25,0x7f,0x07 +trailz %r15, %r12 +! CHECK: 0xd6,0x3c,0x00,0x03