1# RUN: llvm-mc -triple powerpc64-unknown-linux-gnu --filetype=obj -o - %s | \ 2# RUN: llvm-objdump -D -r - | FileCheck --check-prefix=CHECK-BE %s 3# RUN: llvm-mc -triple powerpc64le-unknown-linux-gnu --filetype=obj -o - %s | \ 4# RUN: llvm-objdump -D -r - | FileCheck --check-prefix=CHECK-LE %s 5 6# The purpose of this test is to make sure that 8 byte instructions do not 7# cross 64 byte boundaries. If an 8 byte instruction is about to cross such 8# a boundary then a nop should be added so that the 8 byte instruction starts 9# 4 bytes later and does not cross the boundary. 10# This instruction is 8 bytes: paddi 1, 2, 8589934576, 0 11# This instruction is 4 bytes: addi 2, 3, 15 12# The branches are also 4 bytes each: beq 0, LAB1 (or LAB2) 13 14beq 0, LAB1 # 4 15beq 1, LAB2 # 8 16# CHECK-BE: 0: 41 82 00 c0 bt 2, 0xc0 17# CHECK-BE-NEXT: 4: 41 86 00 f8 bt 6, 0xfc 18# CHECK-LE: 0: c0 00 82 41 bt 2, 0xc0 19# CHECK-LE-NEXT: 4: f8 00 86 41 bt 6, 0xfc 20paddi 1, 2, 8589934576, 0 # 16 21paddi 1, 2, 8589934576, 0 # 24 22paddi 1, 2, 8589934576, 0 # 32 23paddi 1, 2, 8589934576, 0 # 40 24paddi 1, 2, 8589934576, 0 # 48 25paddi 1, 2, 8589934576, 0 # 56 26addi 2, 3, 15 # 60 27# Below the lines 40: and 44: contain the 8 byte instruction. 28# We check to make sure that the nop is added at 3c: so that the 8 byte 29# instruction can start at 40: which is 64 bytes aligned. 30# CHECK-BE: 38: 38 43 00 0f 31# CHECK-BE-NEXT: 3c: 60 00 00 00 nop 32# CHECK-BE-NEXT: 40: 06 01 ff ff 38 22 ff f0 paddi 1, 2, 8589934576, 0 33# CHECK-LE: 38: 0f 00 43 38 34# CHECK-LE-NEXT: 3c: 00 00 00 60 nop 35# CHECK-LE-NEXT: 40: ff ff 01 06 f0 ff 22 38 paddi 1, 2, 8589934576, 0 36paddi 1, 2, 8589934576, 0 37paddi 1, 2, 8589934576, 0 38paddi 1, 2, 8589934576, 0 39paddi 1, 2, 8589934576, 0 40paddi 1, 2, 8589934576, 0 41paddi 1, 2, 8589934576, 0 42paddi 1, 2, 8589934576, 0 43paddi 1, 2, 8589934576, 0 # 64 44paddi 1, 2, 8589934576, 0 45paddi 1, 2, 8589934576, 0 46paddi 1, 2, 8589934576, 0 47paddi 1, 2, 8589934576, 0 48paddi 1, 2, 8589934576, 0 49paddi 1, 2, 8589934576, 0 50paddi 1, 2, 8589934576, 0 51addi 2, 3, 15 # 60 52# CHECK-BE: b8: 38 43 00 0f 53# CHECK-BE-NEXT: bc: 60 00 00 00 nop 54# CHECK-BE: <LAB1>: 55# CHECK-BE-NEXT: c0: 06 01 ff ff 38 22 ff f0 paddi 1, 2, 8589934576, 0 56# CHECK-LE: b8: 0f 00 43 38 57# CHECK-LE-NEXT: bc: 00 00 00 60 nop 58# CHECK-LE: <LAB1>: 59# CHECK-LE-NEXT: c0: ff ff 01 06 f0 ff 22 38 paddi 1, 2, 8589934576, 0 60LAB1: paddi 1, 2, 8589934576, 0 61paddi 1, 2, 8589934576, 0 62paddi 1, 2, 8589934576, 0 63paddi 1, 2, 8589934576, 0 64paddi 1, 2, 8589934576, 0 65paddi 1, 2, 8589934576, 0 66paddi 1, 2, 8589934576, 0 67addi 2, 3, 15 # 60 68# CHECK-BE: f8: 38 43 00 0f 69# CHECK-BE: <LAB2>: 70# CHECK-BE-NEXT: fc: 60 00 00 00 nop 71# CHECK-BE-NEXT: 100: 06 01 ff ff 38 22 ff f0 paddi 1, 2, 8589934576, 0 72# CHECK-LE: f8: 0f 00 43 38 73# CHECK-LE: <LAB2>: 74# CHECK-LE-NEXT: fc: 00 00 00 60 nop 75# CHECK-LE-NEXT: 100: ff ff 01 06 f0 ff 22 38 paddi 1, 2, 8589934576, 0 76LAB2: 77 paddi 1, 2, 8589934576, 0 78 79 80 81