1# RUN: llvm-mc -triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s 2# Hexagon Programmer's Reference Manual 11.4 J 3 4# Call subroutine 5# CHECK: 00 c0 00 5a 6call 0 7# CHECK: 00 c3 00 5d 8if (p3) call 0 9# CHECK: 00 c3 20 5d 10if (!p3) call 0 11 12# Compare and jump 13# CHECK: 00 c0 89 11 14{ p0 = cmp.eq(r17,#-1); if (p0.new) jump:nt 0 } 15# CHECK: 00 c1 89 11 16{ p0 = cmp.gt(r17,#-1); if (p0.new) jump:nt 0 } 17# CHECK: 00 c3 89 11 18{ p0 = tstbit(r17, #0); if (p0.new) jump:nt 0 } 19# CHECK: 00 e0 89 11 20{ p0 = cmp.eq(r17,#-1); if (p0.new) jump:t 0 } 21# CHECK: 00 e1 89 11 22{ p0 = cmp.gt(r17,#-1); if (p0.new) jump:t 0 } 23# CHECK: 00 e3 89 11 24{ p0 = tstbit(r17, #0); if (p0.new) jump:t 0 } 25# CHECK: 00 c0 c9 11 26{ p0 = cmp.eq(r17,#-1); if (!p0.new) jump:nt 0 } 27# CHECK: 00 c1 c9 11 28{ p0 = cmp.gt(r17,#-1); if (!p0.new) jump:nt 0 } 29# CHECK: 00 c3 c9 11 30{ p0 = tstbit(r17, #0); if (!p0.new) jump:nt 0 } 31# CHECK: 00 e0 c9 11 32{ p0 = cmp.eq(r17,#-1); if (!p0.new) jump:t 0 } 33# CHECK: 00 e1 c9 11 34{ p0 = cmp.gt(r17,#-1); if (!p0.new) jump:t 0 } 35# CHECK: 00 e3 c9 11 36{ p0 = tstbit(r17, #0); if (!p0.new) jump:t 0 } 37# CHECK: 00 d5 09 10 38{ p0 = cmp.eq(r17, #21); if (p0.new) jump:nt 0 } 39# CHECK: 00 f5 09 10 40{ p0 = cmp.eq(r17, #21); if (p0.new) jump:t 0 } 41# CHECK: 00 d5 49 10 42{ p0 = cmp.eq(r17, #21); if (!p0.new) jump:nt 0 } 43# CHECK: 00 f5 49 10 44{ p0 = cmp.eq(r17, #21); if (!p0.new) jump:t 0 } 45# CHECK: 00 d5 89 10 46{ p0 = cmp.gt(r17, #21); if (p0.new) jump:nt 0 } 47# CHECK: 00 f5 89 10 48{ p0 = cmp.gt(r17, #21); if (p0.new) jump:t 0 } 49# CHECK: 00 d5 c9 10 50{ p0 = cmp.gt(r17, #21); if (!p0.new) jump:nt 0 } 51# CHECK: 00 f5 c9 10 52{ p0 = cmp.gt(r17, #21); if (!p0.new) jump:t 0 } 53# CHECK: 00 d5 09 11 54{ p0 = cmp.gtu(r17, #21); if (p0.new) jump:nt 0 } 55# CHECK: 00 f5 09 11 56{ p0 = cmp.gtu(r17, #21); if (p0.new) jump:t 0 } 57# CHECK: 00 d5 49 11 58{ p0 = cmp.gtu(r17, #21); if (!p0.new) jump:nt 0 } 59# CHECK: 00 f5 49 11 60{ p0 = cmp.gtu(r17, #21); if (!p0.new) jump:t 0 } 61# CHECK: 00 c0 89 13 62{ p1 = cmp.eq(r17,#-1); if (p1.new) jump:nt 0 } 63# CHECK: 00 c1 89 13 64{ p1 = cmp.gt(r17,#-1); if (p1.new) jump:nt 0 } 65# CHECK: 00 c3 89 13 66{ p1 = tstbit(r17, #0); if (p1.new) jump:nt 0 } 67# CHECK: 00 e0 89 13 68{ p1 = cmp.eq(r17,#-1); if (p1.new) jump:t 0 } 69# CHECK: 00 e1 89 13 70{ p1 = cmp.gt(r17,#-1); if (p1.new) jump:t 0 } 71# CHECK: 00 e3 89 13 72{ p1 = tstbit(r17, #0); if (p1.new) jump:t 0 } 73# CHECK: 00 c0 c9 13 74{ p1 = cmp.eq(r17,#-1); if (!p1.new) jump:nt 0 } 75# CHECK: 00 c1 c9 13 76{ p1 = cmp.gt(r17,#-1); if (!p1.new) jump:nt 0 } 77# CHECK: 00 c3 c9 13 78{ p1 = tstbit(r17, #0); if (!p1.new) jump:nt 0 } 79# CHECK: 00 e0 c9 13 80{ p1 = cmp.eq(r17,#-1); if (!p1.new) jump:t 0 } 81# CHECK: 00 e1 c9 13 82{ p1 = cmp.gt(r17,#-1); if (!p1.new) jump:t 0 } 83# CHECK: 00 e3 c9 13 84{ p1 = tstbit(r17, #0); if (!p1.new) jump:t 0 } 85# CHECK: 00 d5 09 12 86{ p1 = cmp.eq(r17, #21); if (p1.new) jump:nt 0 } 87# CHECK: 00 f5 09 12 88{ p1 = cmp.eq(r17, #21); if (p1.new) jump:t 0 } 89# CHECK: 00 d5 49 12 90{ p1 = cmp.eq(r17, #21); if (!p1.new) jump:nt 0 } 91# CHECK: 00 f5 49 12 92{ p1 = cmp.eq(r17, #21); if (!p1.new) jump:t 0 } 93# CHECK: 00 d5 89 12 94{ p1 = cmp.gt(r17, #21); if (p1.new) jump:nt 0 } 95# CHECK: 00 f5 89 12 96{ p1 = cmp.gt(r17, #21); if (p1.new) jump:t 0 } 97# CHECK: 00 d5 c9 12 98{ p1 = cmp.gt(r17, #21); if (!p1.new) jump:nt 0 } 99# CHECK: 00 f5 c9 12 100{ p1 = cmp.gt(r17, #21); if (!p1.new) jump:t 0 } 101# CHECK: 00 d5 09 13 102{ p1 = cmp.gtu(r17, #21); if (p1.new) jump:nt 0 } 103# CHECK: 00 f5 09 13 104{ p1 = cmp.gtu(r17, #21); if (p1.new) jump:t 0 } 105# CHECK: 00 d5 49 13 106{ p1 = cmp.gtu(r17, #21); if (!p1.new) jump:nt 0 } 107# CHECK: 00 f5 49 13 108{ p1 = cmp.gtu(r17, #21); if (!p1.new) jump:t 0 } 109# CHECK: 00 cd 09 14 110{ p0 = cmp.eq(r17, r21); if (p0.new) jump:nt 0 } 111# CHECK: 00 dd 09 14 112{ p1 = cmp.eq(r17, r21); if (p1.new) jump:nt 0 } 113# CHECK: 00 ed 09 14 114{ p0 = cmp.eq(r17, r21); if (p0.new) jump:t 0 } 115# CHECK: 00 fd 09 14 116{ p1 = cmp.eq(r17, r21); if (p1.new) jump:t 0 } 117# CHECK: 00 cd 49 14 118{ p0 = cmp.eq(r17, r21); if (!p0.new) jump:nt 0 } 119# CHECK: 00 dd 49 14 120{ p1 = cmp.eq(r17, r21); if (!p1.new) jump:nt 0 } 121# CHECK: 00 ed 49 14 122{ p0 = cmp.eq(r17, r21); if (!p0.new) jump:t 0 } 123# CHECK: 00 fd 49 14 124{ p1 = cmp.eq(r17, r21); if (!p1.new) jump:t 0 } 125# CHECK: 00 cd 89 14 126{ p0 = cmp.gt(r17, r21); if (p0.new) jump:nt 0 } 127# CHECK: 00 dd 89 14 128{ p1 = cmp.gt(r17, r21); if (p1.new) jump:nt 0 } 129# CHECK: 00 ed 89 14 130{ p0 = cmp.gt(r17, r21); if (p0.new) jump:t 0 } 131# CHECK: 00 fd 89 14 132{ p1 = cmp.gt(r17, r21); if (p1.new) jump:t 0 } 133# CHECK: 00 cd c9 14 134{ p0 = cmp.gt(r17, r21); if (!p0.new) jump:nt 0 } 135# CHECK: 00 dd c9 14 136{ p1 = cmp.gt(r17, r21); if (!p1.new) jump:nt 0 } 137# CHECK: 00 ed c9 14 138{ p0 = cmp.gt(r17, r21); if (!p0.new) jump:t 0 } 139# CHECK: 00 fd c9 14 140{ p1 = cmp.gt(r17, r21); if (!p1.new) jump:t 0 } 141# CHECK: 00 cd 09 15 142{ p0 = cmp.gtu(r17, r21); if (p0.new) jump:nt 0 } 143# CHECK: 00 dd 09 15 144{ p1 = cmp.gtu(r17, r21); if (p1.new) jump:nt 0 } 145# CHECK: 00 ed 09 15 146{ p0 = cmp.gtu(r17, r21); if (p0.new) jump:t 0 } 147# CHECK: 00 fd 09 15 148{ p1 = cmp.gtu(r17, r21); if (p1.new) jump:t 0 } 149# CHECK: 00 cd 49 15 150{ p0 = cmp.gtu(r17, r21); if (!p0.new) jump:nt 0 } 151# CHECK: 00 dd 49 15 152{ p1 = cmp.gtu(r17, r21); if (!p1.new) jump:nt 0 } 153# CHECK: 00 ed 49 15 154{ p0 = cmp.gtu(r17, r21); if (!p0.new) jump:t 0 } 155# CHECK: 00 fd 49 15 156{ p1 = cmp.gtu(r17, r21); if (!p1.new) jump:t 0 } 157 158# Jump to address 159# CHECK: 00 c0 00 58 160jump 0 161# CHECK: 00 c3 00 5c 162if (p3) jump 0 163# CHECK: 00 c3 20 5c 164if (!p3) jump 0 165 166# Jump to address conditioned on new predicate 167# CHECK: 03 40 45 85 168# CHECK-NEXT: 00 cb 00 5c 169{ p3 = r5 170 if (p3.new) jump:nt 0 } 171# CHECK: 03 40 45 85 172# CHECK-NEXT: 00 db 00 5c 173{ p3 = r5 174 if (p3.new) jump:t 0 } 175# CHECK: 03 40 45 85 176# CHECK-NEXT: 00 cb 20 5c 177{ p3 = r5 178 if (!p3.new) jump:nt 0 } 179# CHECK: 03 40 45 85 180# CHECK-NEXT: 00 db 20 5c 181{ p3 = r5 182 if (!p3.new) jump:t 0 } 183 184# Jump to address conditioned on register value 185# CHECK: 00 c0 11 61 186if (r17!=#0) jump:nt 0 187# CHECK: 00 d0 11 61 188if (r17!=#0) jump:t 0 189# CHECK: 00 c0 51 61 190if (r17>=#0) jump:nt 0 191# CHECK: 00 d0 51 61 192if (r17>=#0) jump:t 0 193# CHECK: 00 c0 91 61 194if (r17==#0) jump:nt 0 195# CHECK: 00 d0 91 61 196if (r17==#0) jump:t 0 197# CHECK: 00 c0 d1 61 198if (r17<=#0) jump:nt 0 199# CHECK: 00 d0 d1 61 200if (r17<=#0) jump:t 0 201 202# Transfer and jump 203# CHECK: 00 d5 09 16 204{ r17 = #21 ; jump 0} 205# CHECK: 00 c9 0d 17 206{ r17 = r21 ; jump 0 } 207