1; Test matching operands with the GPR constraint "r". 2; 3; RUN: llc < %s -mtriple=s390x-linux-gnu -no-integrated-as | FileCheck %s 4 5define void @f1(i32 *%dst) { 6; CHECK-LABEL: f1: 7; CHECK: lhi %r0, 100 8; CHECK: blah %r0 9; CHECK: st %r0, 0(%r2) 10; CHECK: br %r14 11 %val = call i32 asm "blah $0", "=r,0" (i8 100) 12 store i32 %val, i32 *%dst 13 ret void 14} 15 16define void @f2(i32 *%dst) { 17; CHECK-LABEL: f2: 18; CHECK: lhi %r0, 101 19; CHECK: blah %r0 20; CHECK: st %r0, 0(%r2) 21; CHECK: br %r14 22 %val = call i32 asm "blah $0", "=r,0" (i16 101) 23 store i32 %val, i32 *%dst 24 ret void 25} 26 27define void @f3(i32 *%dst) { 28; CHECK-LABEL: f3: 29; CHECK: lhi %r0, 102 30; CHECK: blah %r0 31; CHECK: st %r0, 0(%r2) 32; CHECK: br %r14 33 %val = call i32 asm "blah $0", "=r,0" (i32 102) 34 store i32 %val, i32 *%dst 35 ret void 36} 37 38; FIXME: this uses "lhi %r0, 103", but should use "lghi %r0, 103". 39define void @f4(i32 *%dst) { 40; CHECK-LABEL: f4: 41; CHECK: blah %r0 42; CHECK: st %r0, 0(%r2) 43; CHECK: br %r14 44 %val = call i32 asm "blah $0", "=r,0" (i64 103) 45 store i32 %val, i32 *%dst 46 ret void 47} 48 49define i64 @f5() { 50; CHECK-LABEL: f5: 51; CHECK: lghi %r2, 104 52; CHECK: blah %r2 53; CHECK: br %r14 54 %val = call i64 asm "blah $0", "=r,0" (i8 104) 55 ret i64 %val 56} 57 58define i64 @f6() { 59; CHECK-LABEL: f6: 60; CHECK: lghi %r2, 105 61; CHECK: blah %r2 62; CHECK: br %r14 63 %val = call i64 asm "blah $0", "=r,0" (i16 105) 64 ret i64 %val 65} 66 67define i64 @f7() { 68; CHECK-LABEL: f7: 69; CHECK: lghi %r2, 106 70; CHECK: blah %r2 71; CHECK: br %r14 72 %val = call i64 asm "blah $0", "=r,0" (i32 106) 73 ret i64 %val 74} 75 76define i64 @f8() { 77; CHECK-LABEL: f8: 78; CHECK: lghi %r2, 107 79; CHECK: blah %r2 80; CHECK: br %r14 81 %val = call i64 asm "blah $0", "=r,0" (i64 107) 82 ret i64 %val 83} 84