282 lines · plain
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+cmpbr < %s \2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \4// RUN: | FileCheck %s --check-prefix=CHECK-ERROR5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+cmpbr < %s \6// RUN: | llvm-objdump -d --no-print-imm-hex --mattr=+cmpbr - | FileCheck %s --check-prefix=CHECK-DISASS7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+cmpbr < %s \8// RUN: | llvm-objdump -d --no-print-imm-hex --mattr=-cmpbr - | FileCheck %s --check-prefix=CHECK-UNKNOWN9// Disassemble encoding and check the re-encoding (-show-encoding) matches.10// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+cmpbr < %s \11// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \12// RUN: | llvm-mc -triple=aarch64 -mattr=+cmpbr -disassemble -show-encoding \13// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST14 15//------------------------------------------------------------------------------16// Compare & branch (Register)17//------------------------------------------------------------------------------18 19cbgt w5, w5, #-102420// CHECK-INST: cbgt w5, w5, #-102421// CHECK-DISASS: cbgt w5, w5, 0xfffffffffffffc00 <.text+0xfffffffffffffc0022// CHECK-ENCODING: [0x05,0x20,0x05,0x74]23// CHECK-ERROR: instruction requires: cmpbr24// CHECK-UNKNOWN: 74052005 <unknown>25 26cbgt x5, x5, #102027// CHECK-INST: cbgt x5, x5, #102028// CHECK-DISASS: cbgt x5, x5, 0x400 <.text+0x400>29// CHECK-ENCODING: [0xe5,0x1f,0x05,0xf4]30// CHECK-ERROR: instruction requires: cmpbr31// CHECK-UNKNOWN: f4051fe5 <unknown>32 33cbge x2, x2, #-102434// CHECK-INST: cbge x2, x2, #-102435// CHECK-DISASS: cbge x2, x2, 0xfffffffffffffc08 <.text+0xfffffffffffffc0836// CHECK-ENCODING: [0x02,0x20,0x22,0xf4]37// CHECK-ERROR: instruction requires: cmpbr38// CHECK-UNKNOWN: f4222002 <unknown>39 40cbge w5, w5, #102041// CHECK-INST: cbge w5, w5, #102042// CHECK-DISASS: cbge w5, w5, 0x408 <.text+0x408>43// CHECK-ENCODING: [0xe5,0x1f,0x25,0x74]44// CHECK-ERROR: instruction requires: cmpbr45// CHECK-UNKNOWN: 74251fe5 <unknown>46 47 48cbhi w5, w5, #-102449// CHECK-INST: cbhi w5, w5, #-102450// CHECK-DISASS: cbhi w5, w5, 0xfffffffffffffc10 <.text+0xfffffffffffffc10>51// CHECK-ENCODING: [0x05,0x20,0x45,0x74]52// CHECK-ERROR: instruction requires: cmpbr53// CHECK-UNKNOWN: 74452005 <unknown>54 55cbhi x5, x5, #102056// CHECK-INST: cbhi x5, x5, #102057// CHECK-DISASS: cbhi x5, x5, 0x410 <.text+0x410>58// CHECK-ENCODING: [0xe5,0x1f,0x45,0xf4]59// CHECK-ERROR: instruction requires: cmpbr60// CHECK-UNKNOWN: f4451fe5 <unknown>61 62cbhs x2, x2, #102063// CHECK-INST: cbhs x2, x2, #102064// CHECK-DISASS: cbhs x2, x2, 0x414 <.text+0x414>65// CHECK-ENCODING: [0xe2,0x1f,0x62,0xf4]66// CHECK-ERROR: instruction requires: cmpbr67// CHECK-UNKNOWN: f4621fe2 <unknown>68 69cbhs w5, w5, #102070// CHECK-INST: cbhs w5, w5, #102071// CHECK-DISASS: cbhs w5, w5, 0x418 <.text+0x418>72// CHECK-ENCODING: [0xe5,0x1f,0x65,0x74]73// CHECK-ERROR: instruction requires: cmpbr74// CHECK-UNKNOWN: 74651fe5 <unknown>75 76cbeq w5, w5, #-102477// CHECK-INST: cbeq w5, w5, #-102478// CHECK-DISASS: cbeq w5, w5, 0xfffffffffffffc20 <.text+0xfffffffffffffc20>79// CHECK-ENCODING: [0x05,0x20,0xc5,0x74]80// CHECK-ERROR: instruction requires: cmpbr81// CHECK-UNKNOWN: 74c52005 <unknown>82 83cbeq x5, x5, #102084// CHECK-INST: cbeq x5, x5, #102085// CHECK-DISASS: cbeq x5, x5, 0x420 <.text+0x420>86// CHECK-ENCODING: [0xe5,0x1f,0xc5,0xf4]87// CHECK-ERROR: instruction requires: cmpbr88// CHECK-UNKNOWN: f4c51fe5 <unknown>89 90cbne x2, x2, #-102491// CHECK-INST: cbne x2, x2, #-102492// CHECK-DISASS: cbne x2, x2, 0xfffffffffffffc28 <.text+0xfffffffffffffc28>93// CHECK-ENCODING: [0x02,0x20,0xe2,0xf4]94// CHECK-ERROR: instruction requires: cmpbr95// CHECK-UNKNOWN: f4e22002 <unknown>96 97cbne w5, w5, #-102498// CHECK-INST: cbne w5, w5, #-102499// CHECK-DISASS: cbne w5, w5, 0xfffffffffffffc2c <.text+0xfffffffffffffc2c>100// CHECK-ENCODING: [0x05,0x20,0xe5,0x74]101// CHECK-ERROR: instruction requires: cmpbr102// CHECK-UNKNOWN: 74e52005 <unknown>103 104///105// CBH<XX>106///107 108cbhgt w5, w5, #-1024109// CHECK-INST: cbhgt w5, w5, #-1024110// CHECK-DISASS: cbhgt w5, w5, 0xfffffffffffffc30 <.text+0xfffffffffffffc30>111// CHECK-ENCODING: [0x05,0xe0,0x05,0x74]112// CHECK-ERROR: instruction requires: cmpbr113// CHECK-UNKNOWN: 7405e005 <unknown>114 115cbhge w5, w5, #-1024116// CHECK-INST: cbhge w5, w5, #-1024117// CHECK-DISASS: cbhge w5, w5, 0xfffffffffffffc34 <.text+0xfffffffffffffc34>118// CHECK-ENCODING: [0x05,0xe0,0x25,0x74]119// CHECK-ERROR: instruction requires: cmpbr120// CHECK-UNKNOWN: 7425e005 <unknown>121 122cbhhi w5, w5, #-1024123// CHECK-INST: cbhhi w5, w5, #-1024124// CHECK-DISASS: cbhhi w5, w5, 0xfffffffffffffc38 <.text+0xfffffffffffffc38>125// CHECK-ENCODING: [0x05,0xe0,0x45,0x74]126// CHECK-ERROR: instruction requires: cmpbr127// CHECK-UNKNOWN: 7445e005 <unknown>128 129cbhhs w5, w5, #-1024130// CHECK-INST: cbhhs w5, w5, #-1024131// CHECK-DISASS: cbhhs w5, w5, 0xfffffffffffffc3c <.text+0xfffffffffffffc3c>132// CHECK-ENCODING: [0x05,0xe0,0x65,0x74]133// CHECK-ERROR: instruction requires: cmpbr134// CHECK-UNKNOWN: 7465e005 <unknown>135 136cbheq w5, w5, #-1024137// CHECK-INST: cbheq w5, w5, #-1024138// CHECK-DISASS: cbheq w5, w5, 0xfffffffffffffc40 <.text+0xfffffffffffffc40>139// CHECK-ENCODING: [0x05,0xe0,0xc5,0x74]140// CHECK-ERROR: instruction requires: cmpbr141// CHECK-UNKNOWN: 74c5e005 <unknown>142 143cbhne w5, w5, #-1024144// CHECK-INST: cbhne w5, w5, #-1024145// CHECK-DISASS: cbhne w5, w5, 0xfffffffffffffc44 <.text+0xfffffffffffffc44>146// CHECK-ENCODING: [0x05,0xe0,0xe5,0x74]147// CHECK-ERROR: instruction requires: cmpbr148// CHECK-UNKNOWN: 74e5e005 <unknown>149 150 151///152// CBB<XX>153///154cbbgt w5, w5, #-1024155// CHECK-INST: cbbgt w5, w5, #-1024156// CHECK-DISASS: cbbgt w5, w5, 0xfffffffffffffc48 <.text+0xfffffffffffffc48>157// CHECK-ENCODING: [0x05,0xa0,0x05,0x74]158// CHECK-ERROR: instruction requires: cmpbr159// CHECK-UNKNOWN: 7405a005 <unknown>160 161cbbge w5, w5, #-1024162// CHECK-INST: cbbge w5, w5, #-1024163// CHECK-DISASS: cbbge w5, w5, 0xfffffffffffffc4c <.text+0xfffffffffffffc4c>164// CHECK-ENCODING: [0x05,0xa0,0x25,0x74]165// CHECK-ERROR: instruction requires: cmpbr166// CHECK-UNKNOWN: 7425a005 <unknown>167 168cbbhi w5, w5, #-1024169// CHECK-INST: cbbhi w5, w5, #-1024170// CHECK-DISASS: cbbhi w5, w5, 0xfffffffffffffc50 <.text+0xfffffffffffffc50>171// CHECK-ENCODING: [0x05,0xa0,0x45,0x74]172// CHECK-ERROR: instruction requires: cmpbr173// CHECK-UNKNOWN: 7445a005 <unknown>174 175cbbhs w5, w5, #-1024176// CHECK-INST: cbbhs w5, w5, #-1024177// CHECK-DISASS: cbbhs w5, w5, 0xfffffffffffffc54 <.text+0xfffffffffffffc54>178// CHECK-ENCODING: [0x05,0xa0,0x65,0x74]179// CHECK-ERROR: instruction requires: cmpbr180// CHECK-UNKNOWN: 7465a005 <unknown>181 182cbbeq w5, w5, #-1024183// CHECK-INST: cbbeq w5, w5, #-1024184// CHECK-DISASS: cbbeq w5, w5, 0xfffffffffffffc58 <.text+0xfffffffffffffc58>185// CHECK-ENCODING: [0x05,0xa0,0xc5,0x74]186// CHECK-ERROR: instruction requires: cmpbr187// CHECK-UNKNOWN: 74c5a005 <unknown>188 189cbbne w5, w5, #-1024190// CHECK-INST: cbbne w5, w5, #-1024191// CHECK-DISASS: cbbne w5, w5, 0xfffffffffffffc5c <.text+0xfffffffffffffc5c>192// CHECK-ENCODING: [0x05,0xa0,0xe5,0x74]193// CHECK-ERROR: instruction requires: cmpbr194// CHECK-UNKNOWN: 74e5a005 <unknown>195 196//------------------------------------------------------------------------------197// Compare & branch (Immediate)198//------------------------------------------------------------------------------199 200cbgt w5, #63, #1020201// CHECK-INST: cbgt w5, #63, #1020202// CHECK-DISASS: cbgt w5, #63, 0x45c <.text+0x45c>203// CHECK-ENCODING: [0xe5,0x9f,0x1f,0x75]204// CHECK-ERROR: instruction requires: cmpbr205// CHECK-UNKNOWN: 751f9fe5 <unknown>206 207cbgt x5, #0, #-1024208// CHECK-INST: cbgt x5, #0, #-1024209// CHECK-DISASS: cbgt x5, #0, 0xfffffffffffffc64 <.text+0xfffffffffffffc64>210// CHECK-ENCODING: [0x05,0x20,0x00,0xf5]211// CHECK-ERROR: instruction requires: cmpbr212// CHECK-UNKNOWN: f5002005 <unknown>213 214cbhi w5, #31, #1020215// CHECK-INST: cbhi w5, #31, #1020216// CHECK-DISASS: cbhi w5, #31, 0x464 <.text+0x464>217// CHECK-ENCODING: [0xe5,0x9f,0x4f,0x75]218// CHECK-ERROR: instruction requires: cmpbr219// CHECK-UNKNOWN: 754f9fe5 <unknown>220 221cbhi x5, #63, #-1024222// CHECK-INST: cbhi x5, #63, #-1024223// CHECK-DISASS: cbhi x5, #63, 0xfffffffffffffc6c <.text+0xfffffffffffffc6c>224// CHECK-ENCODING: [0x05,0xa0,0x5f,0xf5]225// CHECK-ERROR: instruction requires: cmpbr226// CHECK-UNKNOWN: f55fa005 <unknown>227 228cblt w5, #63, #1020229// CHECK-INST: cblt w5, #63, #1020230// CHECK-DISASS: cblt w5, #63, 0x46c <.text+0x46c>231// CHECK-ENCODING: [0xe5,0x9f,0x3f,0x75]232// CHECK-ERROR: instruction requires: cmpbr233// CHECK-UNKNOWN: 753f9fe5 <unknown>234 235cblt x5, #0, #-1024236// CHECK-INST: cblt x5, #0, #-1024237// CHECK-DISASS: cblt x5, #0, 0xfffffffffffffc74 <.text+0xfffffffffffffc74>238// CHECK-ENCODING: [0x05,0x20,0x20,0xf5]239// CHECK-ERROR: instruction requires: cmpbr240// CHECK-UNKNOWN: f5202005 <unknown>241 242cblo w5, #31, #1020243// CHECK-INST: cblo w5, #31, #1020244// CHECK-DISASS: cblo w5, #31, 0x474 <.text+0x474>245// CHECK-ENCODING: [0xe5,0x9f,0x6f,0x75]246// CHECK-ERROR: instruction requires: cmpbr247// CHECK-UNKNOWN: 756f9fe5 <unknown>248 249cblo x5, #31, #-1024250// CHECK-INST: cblo x5, #31, #-1024251// CHECK-DISASS: cblo x5, #31, 0xfffffffffffffc7c <.text+0xfffffffffffffc7c>252// CHECK-ENCODING: [0x05,0xa0,0x6f,0xf5]253// CHECK-ERROR: instruction requires: cmpbr254// CHECK-UNKNOWN: f56fa005 <unknown>255 256cbeq w5, #31, #1020257// CHECK-INST: cbeq w5, #31, #1020258// CHECK-DISASS: cbeq w5, #31, 0x47c <.text+0x47c>259// CHECK-ENCODING: [0xe5,0x9f,0xcf,0x75]260// CHECK-ERROR: instruction requires: cmpbr261// CHECK-UNKNOWN: 75cf9fe5 <unknown>262 263cbeq x5, #31, #-1024264// CHECK-INST: cbeq x5, #31, #-1024265// CHECK-DISASS: cbeq x5, #31, 0xfffffffffffffc84 <.text+0xfffffffffffffc84>266// CHECK-ENCODING: [0x05,0xa0,0xcf,0xf5]267// CHECK-ERROR: instruction requires: cmpbr268// CHECK-UNKNOWN: f5cfa005 <unknown>269 270cbne w5, #31, #1020271// CHECK-INST: cbne w5, #31, #1020272// CHECK-DISASS: cbne w5, #31, 0x484 <.text+0x484>273// CHECK-ENCODING: [0xe5,0x9f,0xef,0x75]274// CHECK-ERROR: instruction requires: cmpbr275// CHECK-UNKNOWN: 75ef9fe5 <unknown>276 277cbne x5, #31, #-1024278// CHECK-INST: cbne x5, #31, #-1024279// CHECK-DISASS: cbne x5, #31, 0xfffffffffffffc8c <.text+0xfffffffffffffc8c>280// CHECK-ENCODING: [0x05,0xa0,0xef,0xf5]281// CHECK-ERROR: instruction requires: cmpbr282// CHECK-UNKNOWN: f5efa005 <unknown>