1dccf5c7dSMin-Yih Hsu; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2dccf5c7dSMin-Yih Hsu; RUN: llc -mtriple=m68k < %s -o - | FileCheck %s 3dccf5c7dSMin-Yih Hsu 47335cd05SMin-Yih Hsu@g = internal global i32 10, align 4 57335cd05SMin-Yih Hsu 6dccf5c7dSMin-Yih Hsu; This function is primarily testing constant constraints that can NOT 7dccf5c7dSMin-Yih Hsu; be easily checked by Clang. For example, 'K' and 'M' are both 8dccf5c7dSMin-Yih Hsu; constraints for values that are outside certain numerical range. 9dccf5c7dSMin-Yih Hsudefine void @constant_constraints() { 10dccf5c7dSMin-Yih Hsu; CHECK-LABEL: constant_constraints: 11dccf5c7dSMin-Yih Hsu; CHECK: .cfi_startproc 12dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ; %bb.0: ; %entry 13dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 14dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #1, %d1 15dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 16dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 17dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #8, %d1 18dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 19dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 20dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #-32768, %d1 21dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 22dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 23dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #32767, %d1 24dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 25dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 26dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #-129, %d1 27dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 28dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 29dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #128, %d1 30dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 31dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 32dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #-8, %d1 33dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 34dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 35dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #-1, %d1 36dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 37dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 38dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #-257, %d1 39dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 40dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 41dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #256, %d1 42dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 43dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 44dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #24, %d1 45dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 46dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 47dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #31, %d1 48dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 49dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 50dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #16, %d1 51dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 52dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 53dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #8, %d1 54dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 55dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 56dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #15, %d1 57dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 58dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 59dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #0, %d1 60dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 61dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 62dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #1, %d1 63dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 64dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 65dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #-32769, %d1 66dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 67dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 68dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #32768, %d1 69dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 70dccf5c7dSMin-Yih Hsu; CHECK-NEXT: rts 71dccf5c7dSMin-Yih Hsuentry: 72dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "I"(i32 1) 73dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "I"(i32 8) 74dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "J"(i32 -32768) 75dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "J"(i32 32767) 76dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "K"(i32 -129) 77dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "K"(i32 128) 78dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "L"(i32 -8) 79dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "L"(i32 -1) 80dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "M"(i32 -257) 81dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "M"(i32 256) 82dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "N"(i32 24) 83dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "N"(i32 31) 84dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "O"(i32 16) 85dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "P"(i32 8) 86dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "P"(i32 15) 87dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "^C0"(i32 0) 88dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "^Ci"(i32 1) 89dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "^Cj"(i32 -32769) 90dccf5c7dSMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "^Cj"(i32 32768) 91dccf5c7dSMin-Yih Hsu ret void 92dccf5c7dSMin-Yih Hsu} 93dccf5c7dSMin-Yih Hsu 94dccf5c7dSMin-Yih Hsudefine void @register_constraints() { 95dccf5c7dSMin-Yih Hsu; CHECK-LABEL: register_constraints: 96dccf5c7dSMin-Yih Hsu; CHECK: .cfi_startproc 97dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ; %bb.0: ; %entry 98657bb726SMin-Yih Hsu; CHECK-NEXT: suba.l #4, %sp 99dccf5c7dSMin-Yih Hsu; CHECK-NEXT: .cfi_def_cfa_offset -8 100dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 101dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #94, %d0 102dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 103dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l %d0, (0,%sp) 104dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 105dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #87, %d0 106dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 107dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l %d0, (0,%sp) 108dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;APP 109dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l #66, %a0 110dccf5c7dSMin-Yih Hsu; CHECK-NEXT: ;NO_APP 111dccf5c7dSMin-Yih Hsu; CHECK-NEXT: move.l %a0, (0,%sp) 112657bb726SMin-Yih Hsu; CHECK-NEXT: adda.l #4, %sp 113dccf5c7dSMin-Yih Hsu; CHECK-NEXT: rts 114dccf5c7dSMin-Yih Hsuentry: 115dccf5c7dSMin-Yih Hsu %out = alloca i32, align 4 116dccf5c7dSMin-Yih Hsu %0 = call i32 asm sideeffect "move.l #94, $0", "=r"() 117*cd0d11beSFangrui Song store i32 %0, ptr %out, align 4 118dccf5c7dSMin-Yih Hsu %1 = call i32 asm sideeffect "move.l #87, $0", "=d"() 119*cd0d11beSFangrui Song store i32 %1, ptr %out, align 4 120dccf5c7dSMin-Yih Hsu %2 = call i32 asm sideeffect "move.l #66, $0", "=a"() 121*cd0d11beSFangrui Song store i32 %2, ptr %out, align 4 122dccf5c7dSMin-Yih Hsu ret void 123dccf5c7dSMin-Yih Hsu} 124dccf5c7dSMin-Yih Hsu 1257335cd05SMin-Yih Hsudefine void @memory_constraints() { 1267335cd05SMin-Yih Hsu; CHECK-LABEL: memory_constraints: 1277335cd05SMin-Yih Hsu; CHECK: .cfi_startproc 1287335cd05SMin-Yih Hsu; CHECK-NEXT: ; %bb.0: ; %entry 1297335cd05SMin-Yih Hsu; CHECK-NEXT: suba.l #4, %sp 1307335cd05SMin-Yih Hsu; CHECK-NEXT: .cfi_def_cfa_offset -8 1317335cd05SMin-Yih Hsu; CHECK-NEXT: ;APP 1327335cd05SMin-Yih Hsu; CHECK-NEXT: move.l (0,%sp), %d1 1337335cd05SMin-Yih Hsu; CHECK-NEXT: ;NO_APP 1347335cd05SMin-Yih Hsu; CHECK-NEXT: ;APP 1357335cd05SMin-Yih Hsu; CHECK-NEXT: move.l (g,%pc), %d2 1367335cd05SMin-Yih Hsu; CHECK-NEXT: ;NO_APP 1377335cd05SMin-Yih Hsu; CHECK-NEXT: lea (0,%sp), %a0 1387335cd05SMin-Yih Hsu; CHECK-NEXT: ;APP 1397335cd05SMin-Yih Hsu; CHECK-NEXT: move.l (%a0), %d3 1407335cd05SMin-Yih Hsu; CHECK-NEXT: ;NO_APP 1417335cd05SMin-Yih Hsu; CHECK-NEXT: ;APP 1427335cd05SMin-Yih Hsu; CHECK-NEXT: move.l (0,%sp), %d4 1437335cd05SMin-Yih Hsu; CHECK-NEXT: ;NO_APP 1447335cd05SMin-Yih Hsu; CHECK-NEXT: adda.l #4, %sp 1457335cd05SMin-Yih Hsu; CHECK-NEXT: rts 1467335cd05SMin-Yih Hsuentry: 1477335cd05SMin-Yih Hsu %x = alloca i32, align 4 1487335cd05SMin-Yih Hsu call void asm sideeffect "move.l $0, %d1", "*m"(ptr elementtype(i32) %x) 1497335cd05SMin-Yih Hsu call void asm sideeffect "move.l $0, %d2", "*m"(ptr elementtype(i32) @g) 1507335cd05SMin-Yih Hsu call void asm sideeffect "move.l $0, %d3", "*Q"(ptr elementtype(i32) %x) 1517335cd05SMin-Yih Hsu call void asm sideeffect "move.l $0, %d4", "*U"(ptr elementtype(i32) %x) 1527335cd05SMin-Yih Hsu ret void 1537335cd05SMin-Yih Hsu} 1547335cd05SMin-Yih Hsu 155